Python:Ridge 回归 - ''Ridge' 对象在使用 GridSearchCV 后没有属性 'coef_'

Posted

技术标签:

【中文标题】Python:Ridge 回归 - \'\'Ridge\' 对象在使用 GridSearchCV 后没有属性 \'coef_\'【英文标题】:Python: Ridge regression - ''Ridge' object has no attribute 'coef_' after using GridSearchCVPython:Ridge 回归 - ''Ridge' 对象在使用 GridSearchCV 后没有属性 'coef_' 【发布时间】:2021-01-17 19:03:07 【问题描述】:

我正在使用 Python 3.6.5 和 scikit-learn 0.23.2

from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV, cross_val_score

ridge = Ridge()

r_parameters = 'alpha':[1e-15, 1e-10, 1e-8, 1e-4, 1e-3, 1e-2, 1, 5, 10, 20] # this is the Ridge regressor penalty, across different values

ridge_regressor = GridSearchCV(ridge, r_parameters, scoring = 'neg_mean_squared_error', cv = 5)

ridge_regressor.fit(X,y)

ridge_best_params_ = ridge_regressor.best_params_
ridge_best_score_ = -ridge_regressor.best_score_

这成功地为我提供了 best_params_ 和 best_score_ 值。意思是.fit 已经跑了。 refit 没有调整,所以应该是默认的refit = True

但是,在尝试返回我的岭回归模型的系数时:

for coef, col in enumerate(X.columns):
    print(f"col:  ridge.coef_[coef]")

它导致我出现以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-7-e59d1af522dc> in <module>
      2 
      3 for coef, col in enumerate(X.columns):
----> 4     print(f"col:  ridge.coef_[coef]")

AttributeError: 'Ridge' object has no attribute 'coef_

感谢任何帮助。

【问题讨论】:

ridge_regressor 已安装,因此它应该具有 coef_ 属性 @FBruzzesi 你的意思是如果我使用for coef, col in enumerate(X.columns): print(f"col: ridge_regressor.coef_[coef]") 那么我应该得到系数吗? 试试for coef, col in enumerate(X.columns): print(f"col: ridge_regressor.best_estimator_.coef_[coef]") @FBruzzesi 从使用ridge.coef_ 更改为ridge_regressor.coef_ 后,我得到了一个新的错误代码,而不是TypeError: 'Ridge' object is not subscriptable 【参考方案1】:

ridgeRidge 实例)在拟合 ridge_regressorGridSearchCV 实例)时实际上并没有拟合;相反,安装了ridge 的克隆,并将其中的一个另存为ridge.best_estimator_。所以ridge.best_estimator_.coef_ 将包含改装模型的系数。

注意GridSearchCV确实提供了一些方便的功能来访问best_estimator_;例如ridge.score 只是 ridge.best_estimator_.score 的简写,predict 及其变体也类似。但它并没有为best_estimator_ 的所有方法/属性提供这种直通,而coef_ 是不可用的方法/属性之一。

【讨论】:

以上是关于Python:Ridge 回归 - ''Ridge' 对象在使用 GridSearchCV 后没有属性 'coef_'的主要内容,如果未能解决你的问题,请参考以下文章

python Ridge 回归(岭回归)的原理及应用

用scikit-learn和pandas学习Ridge回归

岭回归 Ridge

Python之岭回归

Python NameError:未定义名称“ridge_regression_sklearn”

Ridge和Lasso回归