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

使用随机森林递归特征消除(RFE)获取特征名称报错及方案验证咨询

解决RFE特征选择中获取选中特征名称的问题

你的方案是完全正确的,原因如下:

  • 使用train_test_split拆分数据集时,只要没有人为调整特征顺序,X_train(numpy数组)的特征顺序和原始特征DataFrame(X_new)的特征顺序完全一致。
  • RFE的rfe.support_返回的布尔数组,是按照原始特征输入顺序标记每个特征是否被选中的,因此直接用X_new.columns[rfe.support_]就能精准提取选中的特征名称。

修正后的代码示例:

from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import pandas as pd

# 假设X_new是预处理后的特征DataFrame,y是标签列
# X_new = pd.DataFrame(...)
# y = ...

# 拆分数据集,特征顺序与X_new保持一致
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)

# 初始化RFE与随机森林分类器
clf_rf_3 = RandomForestClassifier()      
rfe = RFE(estimator=clf_rf_3, n_features_to_select=6, step=1)
rfe.fit(X_train, y_train)

# 获取选中的特征名称
selected_features = X_new.columns[rfe.support_]
print('Chosen best 6 features by RFE:', selected_features)

注意事项:

  • 代码中n_features_to_select=6和打印语句的描述要统一,避免混淆。
  • 确保预处理过程中没有打乱特征顺序(比如重排列、删除后新增列等),如果有这类操作,建议提前保存原始特征名列表(如original_features = X_new.columns.tolist()),再用该列表结合rfe.support_筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:55:19