名称具有预处理后的重要图

Edw*_*ard 8 python xgboost

在构建模型之前,我会像这样进行缩放

X = StandardScaler(with_mean = 0, with_std = 1).fit_transform(X)
Run Code Online (Sandbox Code Playgroud)

并在构建了一个特征重要图

xgb.plot_importance(bst, color='red')
plt.title('importance', fontsize = 20)
plt.yticks(fontsize = 10)
plt.ylabel('features', fontsize = 20)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是,我们得到f0,f1,f2,f3等而不是功能名称.....如何返回功能名称?

谢谢

Edw*_*ard 11

首先我们在预处理之前获得功能名称列表

dtrain = xgb.DMatrix( X, label=y)
dtrain.feature_names
Run Code Online (Sandbox Code Playgroud)

然后

bst.get_fscore()
mapper = {'f{0}'.format(i): v for i, v in enumerate(dtrain.feature_names)}
mapped = {mapper[k]: v for k, v in bst.get_fscore().items()}
mapped
xgb.plot_importance(mapped, color='red')
Run Code Online (Sandbox Code Playgroud)

就这样

  • 当`bst`是`XGBClassifier`的实例时,我需要使用`bst.booster().get_score().items()`而不是`bst.get_fscore().items()`. (4认同)
  • 我需要使用 bst.get_booster().get_score().items() (2认同)