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

如何为DecisionTreeClassifier绘制feature_importance特征重要性图

决策树特征重要性绘制问题解答

为什么feature_importances_返回纯数值数组

scikit-learn的模型设计逻辑中,训练时仅按输入特征的顺序计算权重,不会主动存储特征名称信息,返回数组的第N个值,就对应你传入model.fit()的features_train的第N列特征,二者顺序完全一致。

特征重要性可视化实现步骤

步骤1:关联特征名与重要性数值

你需要提前准备和训练集列顺序一致的特征名列表:如果features_train是pandas的DataFrame结构,直接取columns属性即可;如果是numpy数组,按训练时的特征传入顺序自行定义名称列表即可。
示例代码:

import pandas as pd
import matplotlib.pyplot as plt

# 提取特征名,根据自己的训练集类型二选一
# 情况1:训练集是pandas DataFrame
feature_names = features_train.columns
# 情况2:训练集是numpy数组,按顺序写对应特征名
# feature_names = ['特征A', '特征B', '特征C', ...]

# 合并为DataFrame并按重要性降序排序
feature_importance = pd.DataFrame({
    '特征名称': feature_names,
    '权重': model.feature_importances_
}).sort_values(by='权重', ascending=False)

步骤2:绘制重要性条形图

推荐用横向条形图展示,方便阅读长特征名:

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文显示问题,不需要可以删掉
plt.figure(figsize=(10, 6))

# 绘制横向条形图,如果特征太多可以只取前N个,比如feature_importance.head(20)
plt.barh(feature_importance['特征名称'], feature_importance['权重'])

plt.xlabel('重要性权重')
plt.ylabel('特征名称')
plt.title('DecisionTreeClassifier特征重要性')
plt.gca().invert_yaxis()  # 反转Y轴,权重最高的特征放在最上方
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:57:03