我试图理解代码中的数值不稳定性,当惩罚系数α =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_) is:
array([ 4.26325641e-14, -5.96744876e-15, -3.57739709e+00,
1.37667655e-14, 2.84217094e-14])
谢谢!
代码中有一个bug !
https://github.com/scikit-learn/scikit-learn/issues/7778https://github.com/scikit-learn/scikit-learn/pull/7849 issuecomment - 259796642