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)
显然,这里最重要的变量是ATR14。但是
2. xgb.plot_importance
xgb.plot_importance(model,max_num_features=10)
显然结果不大一样。
这是因为model.feature_importances_的重要性排名默认使用gain,而xgb.plot_importance默认使用weight。
改一下就一样啦
xgb.plot_importance(model,max_num_features=10,importance_type='gain')