运行 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)
注意以下几点:
Ridge
的 fit_intercept=True
参数减少了像您一样手动添加常量的需要。
- 无耻插件:我写了
ibex
,一个旨在让 sklearn
更好地与 pandas
一起工作的库。
我有以下代码成功地运行对提供的数据集进行 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)
注意以下几点:
Ridge
的fit_intercept=True
参数减少了像您一样手动添加常量的需要。- 无耻插件:我写了
ibex
,一个旨在让sklearn
更好地与pandas
一起工作的库。