gpt4 book ai didi

python - 优化函数 scipy.optimize

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:19 24 4
gpt4 key购买 nike

我是Python和统计编程的新手。对于类(class)作业,我们被要求实现 python lasso L1 回归。这涉及使用 QP 求解器来求解 。

0.5 *(x^t * H * x) + f^t * H
st x > 0 (every element of x is greater than zero)

这些是 block 向量和矩阵。我使用二维数组作为向量,使用四维数组作为矩阵 H

def function(x):
x = x.reshape(2, -1)
return 0.5*np.tensordot(x,(np.tensordot(H,x,([1,3],[0,1]))),([0,1],[0,1])) + np.tensordot(f,x,([0,1],[0,1]))

initial_val = np.random.randn(2 * (k+1)).reshape((2,k+1))

bnds = (0,None)
theta = scipy.optimize.minimize(function, initial_val, method="SLSQP", bounds=bnds)

但我仍然在 theta.x 向量中得到负值。谁能告诉我哪里出错了?

最佳答案

您需要为优化提供约束,如果您优化标量函数,则如下所示:

scipy.optimize.minimize(
function,
initial_val,
method="SLSQP",
bounds=bnds,
constraints = [{'type':'ineq', 'fun':lambda x: x}])

或者对于向量函数:

constraints = [{'type':'ineq', 'fun':lambda x: x[i]} \
for i in range(len(initial_val))]

请注意,如果它是向量,那么您还需要为每个元素提供边界:

 bnds = [(0, None) for _ in range(len(initial_val))]

您可能还想查看 reference .

关于python - 优化函数 scipy.optimize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com