Python scipy最小化';numpy.ndarray和#x27;对象不可调用
我运行的一段代码有问题。它的目的是通过scipy.opimize的带约束的最小化函数找到最小化函数的向量 然而,我一直被抛出以下错误Python scipy最小化';numpy.ndarray和#x27;对象不可调用,python,numpy,optimization,scipy,minimize,Python,Numpy,Optimization,Scipy,Minimize,我运行的一段代码有问题。它的目的是通过scipy.opimize的带约束的最小化函数找到最小化函数的向量 然而,我一直被抛出以下错误 line 495, in minimize constraints, callback=callback, **options) line 378, in _minimize_slsqp fx = func(x), line 292, in function_wrapper return function(*(wrapper_args + args), TypeE
line 495, in minimize
constraints, callback=callback, **options) line 378, in _minimize_slsqp
fx = func(x), line 292, in function_wrapper
return function(*(wrapper_args + args), TypeError: 'numpy.ndarray' object is not callable
对于我做错了什么,我有点困惑。以下代码包含要最小化的函数和约束函数
def constraint1(w):
goal = 1
for i in range(w.shape[0]):
goal - w[i]
return goal
def lasso_var(w, *args):
var = w.T.dot(args[0]).dot(w)+args[1]*sum(abs(w))
return var
con1 = {'type': 'eq', 'fun': constraint1}
from scipy.optimize import minimize
sol = minimize(lasso_var(w, *(train_sig, 5)),\
x0=w_equal,\
constraints=con1)
其中w是向量,而train_sig是矩阵
非常感谢你能给予的一切帮助 您应该将函数本身传递给
最小化
,而不是计算值
您的代码不是一个。所以我不知道你的确切意图。但只要这样使用:
sol = minimize(lambda w: lasso_var(w, *(train_sig, 5)),
x0=w_equal,
constraints=con1)
杰出的。这正是我所希望的。非常感谢你。我想我应该为自己如此虔诚地追随网络榜样而感到羞耻。