gpt4 book ai didi

python - XGBoost plot_importance 不显示特征名称

转载 作者:IT老高 更新时间:2023-10-28 21:17:44 30 4
gpt4 key购买 nike

我正在将 XGBoost 与 Python 结合使用,并已使用在 DMatrix 数据上调用的 XGBoost train() 函数成功训练了一个模型。该矩阵是从 Pandas 数据框创建的,该数据框具有列的特征名称。

Xtrain, Xval, ytrain, yval = train_test_split(df[feature_names], y, \
test_size=0.2, random_state=42)
dtrain = xgb.DMatrix(Xtrain, label=ytrain)

model = xgb.train(xgb_params, dtrain, num_boost_round=60, \
early_stopping_rounds=50, maximize=False, verbose_eval=10)

fig, ax = plt.subplots(1,1,figsize=(10,10))
xgb.plot_importance(model, max_num_features=5, ax=ax)

我现在想使用 xgboost.plot_importance() 函数查看特征重要性,但生成的绘图不显示特征名称。相反,这些功能被列为 f1f2f3 等,如下所示。

enter image description here

我认为问题在于我将原始 Pandas 数据框转换为 DMatrix。如何正确关联特征名称以便特征重要性图显示它们?

最佳答案

如果您使用 scikit-learn 包装器,则需要访问底层 XGBoost Booster 并在其上设置功能名称,而不是 scikit 模型,如下所示:

model = joblib.load("your_saved.model")
model.get_booster().feature_names = ["your", "feature", "name", "list"]
xgboost.plot_importance(model.get_booster())

关于python - XGBoost plot_importance 不显示特征名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943314/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com