我试图理解代码中的数值不稳定性,当惩罚系数α= 0时,导致解决方案偏离最小二乘。在文档中提及但未在失败的地方提及该问题。我有一个例子,它不能仅在五个组件中的一个上给出最小二乘解。我无法在代码中找到不良行为的来源。有人有什么想法吗?
from sklearn import linear_model
import numpy as np
y= np.array([ -6.45006793, -3.51251449, -8.52445396, 6.12277822, -19.42109366])
x=np.array([[ 0.47299829, 0. , 0. , 0. , 0. ],
[ 0.08239882, 0.85784863, 0. , 0. , 0. ],
[ 0.30114139, -0.07501577, 0.80895216, 0. , 0. ],
[-0.01460346, -0.1015233 , 0.0407278 , 0.80338378, 0. ],
[-0.69363927, 0.06754067, 0.18064514, -0.0803561 , 0.40427291]])
test=linear_model.LassoLars(0, fit_intercept=False)
test.fit(x.T, y)
test_compare=linear_model.LinearRegression(fit_intercept=False)
test_compare.fit(x.T, y)
test.coef_- test_compare.coef_
系数差异的输出(test.coef_- test_compare.coef_)是:
array([ 4.26325641e-14, -5.96744876e-15, -3.57739709e+00,
1.37667655e-14, 2.84217094e-14])
谢谢!我有点新手,对如何改进这个问题的有用评论表示赞赏。