Scipy minimize 给我一个 "desired error not necessarily achieved due to precision loss",我的代码似乎是正确的
Scipy minimize is giving me a "desired error not necessarily achieved due to precision loss", and my code seemingly is correct
基本上就是标题所说的。对 scipy 最小化进行一些初步练习,但无法弄清楚为什么它不会收敛。
我的预测模型如下:
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)
按预期工作。
然后,我的 loss/gradient 函数如下:
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])
我不知道为什么。优化函数中是否有我滥用的参数?我对最小化方法背后的理论不太了解,但根据我对最小化和优化操作方式的了解,它应该有效。
任何见解将不胜感激!
我的问题是我有
res=y_hat-y
而不是
res=y-y_hat
一个基本错误,这可能是我忽略它的原因。决定回答这个而不是删除以提醒人们这个错误可能是他们认为自己在上面的超级愚蠢的东西!
基本上就是标题所说的。对 scipy 最小化进行一些初步练习,但无法弄清楚为什么它不会收敛。
我的预测模型如下:
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)
按预期工作。
然后,我的 loss/gradient 函数如下:
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])
我不知道为什么。优化函数中是否有我滥用的参数?我对最小化方法背后的理论不太了解,但根据我对最小化和优化操作方式的了解,它应该有效。
任何见解将不胜感激!
我的问题是我有
res=y_hat-y
而不是
res=y-y_hat
一个基本错误,这可能是我忽略它的原因。决定回答这个而不是删除以提醒人们这个错误可能是他们认为自己在上面的超级愚蠢的东西!