sklearn | RFECV + 线性回归给出“'LinearRegression'对象没有属性'coef_'”

Posted

技术标签:

【中文标题】sklearn | RFECV + 线性回归给出“\'LinearRegression\'对象没有属性\'coef_\'”【英文标题】:sklearn | RFECV + Linear Regression gives "'LinearRegression' object has no attribute 'coef_'"sklearn | RFECV + 线性回归给出“'LinearRegression'对象没有属性'coef_'” 【发布时间】:2021-07-19 04:29:22 【问题描述】:

我有以下代码:

rfe = RFECV(estimator=LinearRegression())
model_all = LinearRegression()
pipeline = Pipeline(steps=[('s',rfe),('m',model_all)])
# evaluate model
cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(pipeline, X_all, y_all, scoring='neg_root_mean_squared_error', cv=cv, n_jobs=-1, error_score='raise')
# report performance
print('RMSE: 0'.format(np.mean(n_scores)))

我正在尝试获取线性回归模型的系数来检查特征重要性:

importance = model_all.coef_
# summarize feature importance
for i,v in enumerate(importance):
    print('Feature: %0d, Score: %.5f' % (i,v))

但它给了我:

AttributeError: 'LinearRegression' 对象没有属性 'coef_'

如何获得系数?我还想获取使用 RFECV 过程选择的列的名称。

【问题讨论】:

嘿不适合这里?在计算 coef_ 之前,您需要向模型显示一些数据。 请原谅我的无知,但我不是已经这样做了吗?否则怎么可能达到低MSE? 【参考方案1】:

你在这里实例化模型:

model_all = LinearRegression()

这会计算您管道的 cv 分数:

n_scores = cross_val_score(pipeline, X_all, y_all, scoring='neg_root_mean_squared_error', cv=cv, n_jobs=-1, error_score='raise')

model_all 仍然是普通的 LinearRegression() 对象并且没有安装所以它没有 coef_ 属性

# add this
model_all.fit(X_all, y_all)
importance = model_all.coef_

【讨论】:

以上是关于sklearn | RFECV + 线性回归给出“'LinearRegression'对象没有属性'coef_'”的主要内容,如果未能解决你的问题,请参考以下文章

scikit learn(sklearn) 中 RFECV 中的特征如何排名?

sklearn 中的 RFECV,来自 grid_scores_ 的分数

sklearn学习笔记之简单线性回归

如何在 sklearn 中使用 SVC 运行 RFECV

Python Sklearn线性回归不可调用

通过 Sklearn 的 RFECV(带有交叉验证的递归特征消除)选择特定数量的特征