You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从RFE Pipeline中获取support_属性及保留的特征名称?

报错根因

你当前访问的是未经拟合的原始Pipeline模板中的RFE对象,support_是RFE执行fit()完成特征选择后才会生成的属性,未训练的RFE实例自然不存在该属性。
RandomizedSearchCV在参数搜索过程中会反复克隆你传入的原始rf_clf_pl管道做交叉验证训练,搜索完成后最优参数下拟合完成的完整管道存储在rs.best_estimator_属性中,你直接读取原始未训练的rf_clf_pl当然拿不到训练结果。
另外你的代码存在一处导入笔误需要修正:sklearn.esemble_learning是错误模块路径,正确导入语句为from sklearn.ensemble import RandomForestClassifier,否则会先触发导入报错。

正确获取RFE保留特征名称的方法

按如下步骤操作即可:

  • 从训练完成的随机搜索对象中取出最优拟合管道
best_pipeline = rs.best_estimator_
  • 从最优管道中取出已拟合完成的RFE对象,读取特征选择布尔掩码
fitted_rfe = best_pipeline.named_steps["rfe"]
selected_mask = fitted_rfe.support_
  • 匹配原始特征名,得到RFE最终保留的特征列表
    若训练特征smote_X_train为pandas DataFrame格式,直接用掩码筛选列名即可:
    selected_feature_names = smote_X_train.columns[selected_mask].tolist()
    
    若训练特征为numpy数组格式,提前按输入顺序保存原始特征名列表,再用相同掩码做筛选即可。

内容的提问来源于stack exchange,提问作者Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:18:17