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

如何用Pandas数据框替代波士顿数据集feature_names设置Matplotlib Y轴刻度?

当然可以!完全不用纠结,只需要把原代码里的boston.feature_names替换成你自己DataFrame的特征列名就行,下面给你详细拆解操作步骤和示例:

核心思路

原代码里的boston.feature_names本质就是Scikit-Learn内置数据集的特征名称列表,你只需要用自己Pandas DataFrame的特征列名来替代它——不管是直接用DataFrame的.columns属性,还是你手动定义的特征名称列表,只要和排序后的特征重要性对应上就没问题。

完整适配代码示例

假设你的自定义数据已经存在Pandas DataFrame中,这里给你一套可直接复用的代码:

import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
import matplotlib.pyplot as plt

# 1. 加载并处理你的自定义数据
my_data = pd.read_csv("your_dataset.csv")  # 替换成你的数据路径/加载方式
X = my_data.drop("target_column", axis=1)  # 替换成你的目标变量列名
y = my_data["target_column"]

# 2. 训练梯度提升回归模型
gbr = GradientBoostingRegressor(random_state=42)
gbr.fit(X, y)

# 3. 绘制变量重要性图(重点修改部分)
importances = gbr.feature_importances_
sorted_idx = importances.argsort()  # 按特征重要性排序的索引
pos = range(len(sorted_idx))

plt.barh(pos, importances[sorted_idx], align="center")
# 关键修改:用自己DataFrame的特征列名替换原数据集的feature_names
plt.yticks(pos, X.columns[sorted_idx])
plt.xlabel("Feature Importance")
plt.title("Variable Importance")
plt.tight_layout()
plt.show()

# 4. 绘制偏差(Deviance)图(这部分不需要改特征名,直接复用逻辑即可)
test_score = []
for i, y_pred in enumerate(gbr.staged_predict(X)):
    test_score.append(gbr.loss_(y, y_pred))

plt.figure()
plt.plot(range(1, gbr.n_estimators_ + 1), gbr.train_score_, label="Training Deviance")
plt.plot(range(1, gbr.n_estimators_ + 1), test_score, label="Test Deviance")
plt.legend(loc="upper right")
plt.xlabel("Boosting Iterations")
plt.ylabel("Deviance")
plt.title("Gradient Boosting Deviance")
plt.show()

额外说明

如果你的特征名称是手动定义的列表(比如custom_feature_names = ['area', 'room_num', ...]),直接把代码里的X.columns换成这个列表就行,核心是保证传入plt.yticks的名称顺序和sorted_idx排序后的特征重要性一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:21:15