关于xgboost中feature_importances_和xgb.plot_importance不匹配的问题。

model.feature_importances_是和原训练集中的列名相对应的!!!

我一直从直觉上就这么觉得,因为如果不对应的话,那要怎么排列呢?

1. model.feature_importances

im=pd.DataFrame({'importance':model.feature_importances_,'var':data4.columns[:-1]})
im=im.sort_values(by='importance',ascending=False)
im.head(10)

关于xgboost中feature_importances_和xgb.plot_importance不匹配的问题。_第1张图片

显然,这里最重要的变量是ATR14。但是

2. xgb.plot_importance

xgb.plot_importance(model,max_num_features=10)

关于xgboost中feature_importances_和xgb.plot_importance不匹配的问题。_第2张图片

显然结果不大一样。

这是因为model.feature_importances_的重要性排名默认使用gain,而xgb.plot_importance默认使用weight。

改一下就一样啦

xgb.plot_importance(model,max_num_features=10,importance_type='gain')

关于xgboost中feature_importances_和xgb.plot_importance不匹配的问题。_第3张图片

你可能感兴趣的:(关于xgboost中feature_importances_和xgb.plot_importance不匹配的问题。)