我通过它的scikit-learn风格的Python接口调用xgboost:
model = xgboost.XGBRegressor()
%time model.fit(trainX, trainY)
testY = model.predict(testX)
一些 sklearn 模型通过属性 feature_importances
告诉您它们为特征分配的重要性。对于XGBRegressor
来说,这似乎不存在:
model.feature_importances_
AttributeError Traceback (most recent call last)
<ipython-input-36-fbaa36f9f167> in <module>()
----> 1 model.feature_importances_
AttributeError: 'XGBRegressor' object has no attribute 'feature_importances_'
奇怪的是:对于我的合作者来说,属性feature_importances_
就在那里!可能是什么问题?
这些是我拥有的版本:
In [2]: xgboost.__version__
Out[2]: '0.6'
In [4]: sklearn.__version__
Out[4]: '0.18.1'
。以及来自 GitHub 的 xgboost C++库,提交ef8d92fc52c674c44b824949388e72175f72e4d1
。
你是如何安装 xgboost 的?您是否在从 github 克隆包后构建了包,如文档中所述?
http://xgboost.readthedocs.io/en/latest/build.html
如这个答案:
XGBClassifier 的功能重要性
pip安装和xgboost似乎总是有问题。从您的构建构建和安装它似乎有所帮助。
这对我有用:
model.get_booster().get_score(importance_type='weight')
希望对您有所帮助
是的,XGBoost 模型具有特征重要性详细信息
尝试以下操作:(它还为您提供功能的名称及其权重)
from matplotlib import pyplot
bars = xgb_model.get_booster().feature_names
y_pos = np.arange(len(bars))
pyplot.bar(range(len(xgb_model.feature_importances_)), xgb_model.feature_importances_)
pyplot.xticks(y_pos, xgb_model.get_booster().feature_names, color='black', rotation=45, fontsize='25', horizontalalignment='right')
pyplot.show()
特征重要性图
这对你有用,也许。
xgb.plot_importance(bst)
这是链接:情节