python xgboost有feature_importances_吗?

2vuwiymt  于 2023-04-10  发布在  Python
关注(0)|答案(4)|浏览(204)

我通过它的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

y1aodyip

y1aodyip1#

你是怎么安装xgboost的?你是按照文档中的描述从github克隆后构建的吗?
http://xgboost.readthedocs.io/en/latest/build.html
就像这个答案:
Feature Importance with XGBClassifier
pip-installation和xgboost似乎总是有问题,从你的构建版本中构建和安装它似乎会有所帮助。

piztneat

piztneat2#

这对我很有效:

model.get_booster().get_score(importance_type='weight')

希望能有所帮助

j9per5c4

j9per5c43#

是,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()

Feature importance plot

nbnkbykc

nbnkbykc4#

也许这对你有用。
xgb.plot_importance(bst)
这就是链接:情节

相关问题