我对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 –