运行 pandas 数据框上的套索和岭回归

running lasso and ridge regression on pandas dataframe

我有以下代码成功地运行对提供的数据集进行 OLS 回归:

y = df['SPXR_{}D'.format(window)]
x = df[cols]
x = sm.add_constant(x)
mod = sm.OLS(y, x)
res = mod.fit()

我该如何 运行 套索和山脊呢?我似乎找不到任何 statsmodels 函数或包来执行此操作。

使用 sklearn 更新代码:

y = df['SPXR_{}D'.format(window)]
x = df[cols]
x = sm.add_constant(x)
mod = linear_model.Lasso()
res = mod.fit(x, y)
print(res.coef_)
print(res.intercept_)

res.coef_ 看起来像这样:

[ 0.  0. -0.  0. -0. -0. -0.  0.  0. -0.  0.  0.  0. -0. -0.  0. -0.]

我使用函数的方式有问题吗? (也许我不应该使用 statsmodels 将 alpha 常量添加到我的 DF 中?)

正如 sacul 所写,这些东西最好使用 sklearn。在这种情况下,

from sklearn import linear_model
rgr = linear_model.Ridge().fit(x, y)

注意以下几点:

  1. Ridgefit_intercept=True 参数减少了像您一样手动添加常量的需要。
  2. 无耻插件:我写了 ibex,一个旨在让 sklearn 更好地与 pandas 一起工作的库。