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

时间:2016-07-26 22:22:15

标签: python xgboost

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

X = StandardScaler(with_mean = 0, with_std = 1).fit_transform(X)

并在构建功能重要性图

之后
xgb.plot_importance(bst, color='red')
plt.title('importance', fontsize = 20)
plt.yticks(fontsize = 10)
plt.ylabel('features', fontsize = 20)

enter image description here

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

感谢

3 个答案:

答案 0 :(得分:9)

首先我们得到预处理前的功能名称列表

dtrain = xgb.DMatrix( X, label=y)
dtrain.feature_names

然后

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')

全部

答案 1 :(得分:0)

对于xgboost 0.82,答案非常简单,只需用功能名称字符串列表覆盖功能名称属性即可。

trained_xgbmodel.feature_names = feature_name_list
xgboost.plot_importance(trained_xgbmodel)

答案 2 :(得分:0)

您可以使用以下方法检索Xgboost模型(受scikit-learn像API训练)的重要性:

xgb.feature_importances_

要检查重要性类型:xgb.importance_type。重要性类型可以在Xgboost构造函数中设置。您可以在此post中了解有关在Xgboost中计算功能重要性的方法。