我對python非常陌生,而且我陷在這個問題上: 我想用scipy.optimize.minimize
來最大化一個函數,我遇到了一些問題與我定義的函數的額外參數。ValueError:在使用optimize.minimize時需要超過3個值才能解壓縮。
我尋找了大量解答問題的解決方案,但找不到解決我問題的任何問題。 我在Structure of inputs to scipy minimize function中看到了如何傳遞一個額外的參數,使其在函數最小化時保持不變,從我的角度來看,我的代碼看起來很好。
這是我的代碼:
import numpy as np
from scipy.stats import pearsonr
import scipy.optimize as optimize
def min_pears_function(a,exp):
(b,c,d,e)=a
return (1-(pearsonr(b + exp[0] * c + exp[1] * d + exp[2],e)[0]))
a = (log_x,log_y,log_t,log_z) # where log_x, log_y, log_t and log_z are numpy arrays with same length
guess_PF=[0.6,2.0,0.2]
res = optimize.minimize(min_pears_function, guess_PF, args=(a,), options={'xtol': 1e-8, 'disp': True})
運行代碼時,我得到了以下錯誤:
ValueError: need more than 3 values to unpack
,但我看不出有什麼必要爭論我失蹤。該功能似乎工作正常,所以我想問題是在optimize.minimize
調用?這裏發生
這個'ValueError'在哪裏出現?給出更多的回溯或一個適當自包含的例子 – donkopotamus
沒有完整的堆棧跟蹤它很難說,但我想如果你打印(一)在你的功能,你會發現一個= log_x,log_y,log_t和你的錯誤(b,c,d,e)= a –