如何通过'信息获取'在xgboost中获得功能重要性?

时间:2016-11-23 17:33:53

标签: python python-3.x matplotlib machine-learning xgboost

我们可以通过'权重'获得特征重要性:

model.feature_importances_

但这不是我想要的。我希望通过信息获得重要性。

我们可以通过'获得'图获得特征重要性:

xgboost.plot_importance(model, importance_type='gain')

但是,我不知道如何从上面的图中获取特征重要性数据。或者

如果有像model.feature_importances_这样的函数来赋予增益特征重要性吗?这两种方式中的任何一种都可行。如果问题不明确,请在评论中告诉我

3 个答案:

答案 0 :(得分:6)

您可以从

获取
model.booster().get_score(importance_type='gain')

http://xgboost.readthedocs.io/en/latest/python/python_api.html

答案 1 :(得分:0)

实际上,我对你的问题有点不清楚,但我仍然试着回答这个问题。

我猜你需要像功能选择这样的东西。如果我是对的,那么你可以查看sklearn.feature_selection。

以下是网址: http://scikit-learn.org/stable/modules/feature_selection.html

有许多重要的功能,如chi2,SelectKBest,mutual_info_classif,f_regression,mutual_info_regression等。

答案 2 :(得分:0)

在当前版本的Xgboost中,重要性的默认类型为gain,请参见docs中的importance_type

还可以使用permutation_importance包中的scikit-learnSHAP值来计算功能重要性。您可以在我的this blog post中的Xgboost中阅读有关计算功能重要性的其他方法的详细信息。