【发布时间】:2021-01-03 21:40:45
【问题描述】:
基本上就是标题所说的。使用 scipy minimize 进行一些初步练习,但不知道为什么它不会收敛。
我的预测模型如下:
def predict(X,betas):
y_hat = np.dot(X,betas)
return y_hat
X = np.array([[1,0],[1,-1],[1,2]])
betas = np.array([0.1,0.3])
y_hat = predict(X,betas)
print(y_hat)
按预期工作。
然后,我的损失/梯度函数如下:
def lossRSS(betas,X,y):
y_hat = predict(X, betas)
res = y_hat-y
rss = np.sum(res * res)
gradient = -2 * np.transpose(X).dot(res)
return (rss, gradient)
X = np.array([[1,0],[1,-1],[1,2]])
betas = np.array([0.1,0.3])
y = np.array([0,0.4,2])
lossRSS(betas,X,y)
这也可以按预期工作。
最后,我实现了我的最小化函数,如下所示:
def minimization(X, y, lossfuncn):
betas = np.array([0.1,0.3])
result = so.minimize(lossfuncn, betas, args=(X, y), jac=True)
print(result)
X = np.array([[1,0],[1,-1],[1,2]])
y = np.array([0,0.4,2])
minimization(X,y,lossRSS)
但我得到以下输出:
fun: 2.06
hess_inv: array([[1, 0],
[0, 1]])
jac: array([3.6, 4. ])
message: 'Desired error not necessarily achieved due to precision loss.'
nfev: 53
nit: 0
njev: 41
status: 2
success: False
x: array([0.1, 0.3])
我不知道为什么。优化函数中是否存在我误用的参数?我对最小化方法背后的理论并不太敏锐,但根据我对最小化和优化操作的了解,它应该可以工作。
任何见解将不胜感激!
【问题讨论】:
标签: python-3.x scipy data-science scipy-optimize