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 中的特征如何排名?