预处理后的名称特征重要性图
Names features importance plot after preprocessing
在构建模型之前,我会像这样进行缩放
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)
问题是我们得到的不是特征名称,而是 f0、f1、f2、f3 等......
如何return特征的名称?
谢谢
首先我们在预处理之前得到特征名称列表
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')
就这些了
对于 xgboost 0.82,答案很简单,只需用特征名称字符串列表覆盖特征名称属性即可。
trained_xgbmodel.feature_names = feature_name_list
xgboost.plot_importance(trained_xgbmodel)
您可以通过以下方式检索 Xgboost 模型的重要性(使用 scikit-learn
像 API 训练):
xgb.feature_importances_
检查重要性类型:xgb.importance_type
。重要性类型可以在 Xgboost 构造函数中设置。您可以在 post.
中阅读 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)
问题是我们得到的不是特征名称,而是 f0、f1、f2、f3 等...... 如何return特征的名称?
谢谢
首先我们在预处理之前得到特征名称列表
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')
就这些了
对于 xgboost 0.82,答案很简单,只需用特征名称字符串列表覆盖特征名称属性即可。
trained_xgbmodel.feature_names = feature_name_list
xgboost.plot_importance(trained_xgbmodel)
您可以通过以下方式检索 Xgboost 模型的重要性(使用 scikit-learn
像 API 训练):
xgb.feature_importances_
检查重要性类型:xgb.importance_type
。重要性类型可以在 Xgboost 构造函数中设置。您可以在 post.