Python的Lasso回归:简单问题



假设我有一个值表:

df = pd.DataFrame({'Y1':[1, 2, 3, 4, 5, 6], 'X1':[1, 2, 3, 4, 5, 6], 'X2':[1, 1, 2, 1, 1, 1], 
'X3':[6, 6, 6, 5, 6, 4], 'X4':[6, 5, 4, 3, 2, 1]})

我想做一个简单的拉索回归,使用所有这些值作为我的测试集,其中Y1是因变量,所有X1…X4是自变量。我尝试过使用以下内容:

from sklearn.linear_model import Lasso
Lasso(alpha = 0.0001).fit(df, df['Y1'])

但它并没有给我想要的系数。我该如何执行这个简单的任务?谢谢

我认为你不完全理解系数的含义。首先,不应该对所有变量(包括'Y1')回归'Y1'。不要在自变量中包含'Y1'

Lasso(alpha = 0.0001).fit(df[['X1','X2','X3','X4']], df['Y1'])

Lasso只是一种为线性模型"缩小"自变量集的方法(通过尝试找到一个能很好地预测因变量的自变量子集)。你需要了解的是线性回归的作用。请记住,线性回归的目标是创建一个可用于预测因变量值的线性模型。您可能会提出以下模型(这是您在进行线性回归时试图解决的问题,特别是您正在解决的系数):

Y1 = b1*X1 + b2*X2 + b3*X3 + b4*X4

现在,如果我们使用您建议的系数(保留'Y1'),那么模型将是:

Y1 = Y1 + X1 - X4

但很明显,这并不能很好地预测'Y1'。我们可以将模型更改为:

Y1 = Y1

CCD_ 9对CCD_。这就是为什么系数的输出是[ 1, 0, -0, -0, -0]。但是,这不是我们在运行回归时想要的。正如我之前所说,您希望将'Y1'排除在回归之外。因此,使用您建议的系数,去掉'Y1',您的模型将是:

Y1 = X1 - X4

再次注意,这并不能很好地预测'Y1'(您可以从数据集中测试出一些点)。相反,您可以使用以下模型来完美地预测'Y1'

Y1 = X1

因此,如果你在'X1','X2','X3','X4'上用套索回归'Y1',你应该得到[1, 0, 0, 0]的系数。

相关内容

  • 没有找到相关文章

最新更新