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

如何基于随机森林特征重要性筛选TopN特征后进行t-SNE降维可视化

实现方案

步骤1:提取随机森林特征重要性前N的特征

训练完成的RandomForestClassifier实例自带feature_importances_属性,和输入特征的列顺序一一对应,我们可以基于该属性筛选前N个重要性最高的特征:

import pandas as pd

# 定义需要提取的特征数量
n_top = 10

# 构造特征名与重要性的对应表
feature_imp = pd.DataFrame({
    "col_name": X.columns,
    "imp_score": clf_rf.feature_importances_
})

# 按重要性降序排序,取前n_top个特征的列名
top_cols = feature_imp.sort_values("imp_score", ascending=False).head(n_top)["col_name"].tolist()

# 从原特征集中筛选出目标特征子集
X_top_features = X[top_cols]

步骤2:用筛选后的特征子集执行t-SNE降维可视化

仅需要将原来t-SNE代码中的输入X替换为上一步得到的X_top_features即可:

from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
import numpy as np

tsne = TSNE(n_components=2, random_state=11)
X_2d = tsne.fit_transform(X_top_features)

target_ids = range(0,2)
target_names = np.array(["label 1", "label 2"])

plt.figure(figsize=(6, 5))
colors = 'r', 'g'
for i, c, label in zip(target_ids, colors, target_names):
    plt.scatter(X_2d[y == i, 0], X_2d[y == i, 1], c=c, label=label)
plt.legend()

plt.xlabel("Dimension 1")
plt.ylabel("Dimension 2")

plt.show()

注意事项:

  • 如果需要拆分训练集、测试集单独做可视化,建议仅基于训练集的特征重要性筛选特征,再分别提取训练集、测试集的对应特征子集做降维,避免数据泄露
  • 可以根据样本量调整t-SNE的perplexity参数,一般建议取值在5~50之间,可视化效果会更合理

内容的提问来源于stack exchange,提问作者Adler Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:06:03