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

如何在DataFrame中将特征与其对应的特征重要度进行映射

操作方法

你要实现特征名和重要度的映射、以及带名称的绘图只需要利用特征矩阵x的columns属性即可,feature_importances_返回的数组顺序和x.columns的顺序完全对应,直接配对即可。

前置修正(你的现有代码存在两处可调整的点)

  • 列选择时字符串之间缺少逗号,会触发语法错误,修正后:
    df1 = df[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'LSTAT']]
    x = df1[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO']]
    
  • 现有代码中未定义x_train/y_train,如果需要使用随机森林部分的代码,需要先添加数据集切分逻辑:
    from sklearn.model_selection import train_test_split
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)
    

特征重要度与列名映射

在你获取importance = model.feature_importances_之后,添加以下代码即可完成映射:

import pandas as pd
# 生成映射表,支持按重要度降序排列
feature_importance = pd.DataFrame({
    '特征名称': x.columns,
    '重要度': importance
}).sort_values(by='重要度', ascending=False)

# 打印映射结果
print(feature_importance)

如果不需要转成DataFrame,也可以直接遍历输出:

for col_name, imp_score in zip(x.columns, importance):
    print(f'特征名:{col_name},重要度:{imp_score:.5f}')

绘制带特征名的重要度图

替换你原有的绘图代码即可:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))
plt.bar(feature_importance['特征名称'], feature_importance['重要度'])
plt.xlabel('特征名称')
plt.ylabel('特征重要度')
plt.title('DecisionTreeRegressor 特征重要度')
plt.xticks(rotation=45) # 旋转x轴标签避免重叠
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:15:00