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

如何用Matplotlib将特征重要性分数按从高到低排序可视化?

解决ExtraTreesClassifier特征重要性排序可视化问题

针对你遇到的特征重要性未按分数排序的问题,我来一步步帮你搞定:

1. 实现按重要性分数从高到低排序并可视化的方法

核心思路是先对特征重要性分数进行降序排序,同时让对应的特征名称同步排序,这样绘图时就能呈现从高到低的顺序。我修改了你的代码,加入了完整的排序逻辑,你可以直接复用:

from pandas import read_excel
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
import numpy as np

# 加载数据
names = ['8,oct18', '3,oct18', '4,oct18', '3,sen17', '3,sen17', '4,sen17', '8,sen17', '3,aug17', '8,aug17','4,aug17', '3,apr17', '4,apr17', '8,apr17', '3,jan17', '8,jan17', '4,jan17', 'jan19', 'jan19', 'jan19', 'may18', 'may18', 'may18', '11, sen17', '11, dec2017', '12,dec2017', '11,aug 2017', '12,aug 2017', '11, apr 2017', '12, apr 2017', '30t', 'class']
dataframe = read_excel("/home/qw/myprojects/valuevo/data.xlsx", names=names)
array = dataframe.values
X = array[:,0:30]
Y = array[:,30]

# 计算特征重要性
model = ExtraTreesClassifier()
model.fit(X, Y)

# 准备特征名称和对应分数(去掉最后一个类别列)
feature_names = np.array(names[:-1])
importances = np.array(model.feature_importances_)

# 关键:按重要性降序排序,同步特征名称顺序
sorted_indices = np.argsort(importances)[::-1]  # 获取降序排序的索引
sorted_importances = importances[sorted_indices]
sorted_features = feature_names[sorted_indices]

# 绘图(换成横向条形图更适配30个特征的展示)
plt.figure(figsize=(10, 8))
plt.title("ExtraTrees Feature Importance (Sorted)")
plt.barh(sorted_features, sorted_importances)
plt.xlabel("Importance Score")
plt.ylabel("Feature Names")
plt.show()

核心步骤说明:

  • np.argsort(importances)[::-1]:argsort会生成数组从小到大排序的索引,加上[::-1]就把索引反转成从大到小的顺序,这是实现降序排序的关键。
  • 用排序后的索引重新提取特征名和分数,就能保证两者一一对应且按分数从高到低排列。
  • 换成barh横向条形图,能避免30个特征的名称因长度过长挤在一起,提升可读性。

2. 控制排序逻辑的变量/工具

排序逻辑是由NumPy来控制的,Matplotlib仅负责绘制已经排好序的数据,本身不处理排序:

  • 核心工具是np.argsort()函数,它生成排序后的索引数组,我们通过这个索引来重新排列特征名和重要性分数。
  • 你也可以用Python内置的sorted()函数配合zip()实现排序,效果一致:
# 另一种排序方式:用Python内置工具
sorted_pairs = sorted(zip(feature_names, importances), key=lambda x: x[1], reverse=True)
sorted_features, sorted_importances = zip(*sorted_pairs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:19