对于随机数据的平方矩阵,N列和N行。我正在拟合两个模型,线性回归和拉索。
在线性回归中,我在训练集上得到了一个完美的分数,而在Lasso中,我得到了0的分数。
import pandas as pd
import numpy as np
from sklearn import linear_model
N = 100
X = pd.DataFrame(np.random.rand(N,N))
y = np.random.randint(20, size=N)
lin = linear_model.LinearRegression().fit(X,y)
lasso = linear_model.Lasso().fit(X,y)
print('Linear regression score',lin.score(X,y))
print('Lasso score',lasso.score(X,y))
线性回归得分1.0Lasso分数0.0我的问题将是:
注意:在这种情况下,矩阵是平方的,数据/目标是随机创建的。
发布于 2019-12-28 10:43:13
这里发生了几件事:
将矩阵更改为列少于行,您将得到线性回归的低(但正) R^2。再看看拉索系数,它们都是零。
也请看一下预测值。你会发现线性模型不能很好地工作。在这种情况下,R平方没有给出模型拟合的任何指示。
你也可以尝试改变随机模式,以有一些趋势,你会发现,拉索不会缩小所有系数为零。
import pandas as pd
import numpy as np
from sklearn import linear_model
n = 1000
k = 5
X = pd.DataFrame(np.random.rand(n,k))
y = np.random.randint(2, size=n)
lin = linear_model.LinearRegression().fit(X,y)
lasso = linear_model.Lasso().fit(X,y)
print(lin.coef_)
print(lin.intercept_)
print(lasso.coef_)
print(lasso.intercept_)
print('Linear regression score',lin.score(X,y))
print('Lasso score',lasso.score(X,y))
输出:
[-0.00446436 -0.04509905 0.07870413 -0.00165025 -0.03951546]
0.5010650787133537
[-0. -0. 0. -0. -0.]
0.495
Linear regression score 0.003094912043144493
Lasso score 0.0
https://datascience.stackexchange.com/questions/65545
复制相似问题