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

使用RandomForestClassifier时,如何确定SelectFromModel()的特征选择阈值?

基于RandomForestClassifier的70维特征筛选方案

嗨,刚好我经常用随机森林做特征筛选,来帮你把这个流程补全并梳理清楚~针对70个特征的场景,我们可以通过随机森林的特征重要性得分快速定位最有价值的特征,下面是完整的实现思路和代码:

1. 核心流程:训练模型并获取特征重要性

首先我们需要训练随机森林模型,然后利用它的feature_importances_属性拿到每个特征的重要性得分,再对得分降序排序:

import numpy as np
from sklearn.ensemble import RandomForestClassifier

# 假设你的特征列是data中除第一列外的所有列(第一列为标签)
feat_labels = data.columns[1:]
# 初始化随机森林:设置n_estimators保证模型稳定性,random_state确保结果可复现
clf = RandomForestClassifier(n_estimators=100, random_state=0)
# 用训练集拟合模型
clf.fit(X_train, y_train)
# 获取每个特征的重要性得分
importances = clf.feature_importances_
# 对得分降序排序,得到特征的索引顺序
indices = np.argsort(importances)[::-1]

2. 按重要性排名输出特征

接下来我们可以循环输出每个特征的排名、名称和具体得分,方便你直观查看:

print("特征重要性排名(从高到低):")
for f in range(X_train.shape[1]):
    # 输出排名、特征名、保留4位小数的得分
    print(f"{f+1}. 【{feat_labels[indices[f]]}】 | 重要性得分: {importances[indices[f]]:.4f}")

3. 快速筛选Top N特征

如果想直接提取最核心的N个特征(比如Top20),可以直接通过索引切片获取:

# 定义要筛选的Top数量
top_n = 20
# 获取Top N特征的名称列表
top_features = feat_labels[indices[:top_n]].tolist()
print(f"\n筛选出的Top{top_n}核心特征: {top_features}")
# 从训练集中提取这些特征,用于后续模型训练
X_train_top = X_train[top_features]

4. 可视化特征重要性(可选但推荐)

用条形图把70个特征的重要性可视化,能更直观地看到哪些特征是“关键玩家”:

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
plt.title("70个特征的重要性排序", fontsize=14)
# 绘制条形图
plt.bar(range(X_train.shape[1]), importances[indices], color='#1f77b4', align='center')
# 设置x轴标签为特征名,旋转90度避免重叠
plt.xticks(range(X_train.shape[1]), feat_labels[indices], rotation=90, fontsize=10)
plt.xlabel("特征名称", fontsize=12)
plt.ylabel("重要性得分", fontsize=12)
# 自动调整布局,防止标签被截断
plt.tight_layout()
plt.show()

一些实用小贴士

  • 如果你觉得重要性得分不够稳定,可以把n_estimators调大(比如200或500),树越多,模型的特征重要性评估越可靠;
  • 随机森林的内置重要性得分对高基数特征、数值范围大的特征有偏向性,如果你的特征里有这类情况,建议先做标准化、编码等预处理;
  • 要是需要更严谨的评估,可以用sklearn的permutation_importance函数(排列重要性),它通过打乱特征值来评估特征对模型的影响,比内置得分更鲁棒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:49