HELP,这个简单的代码喊出了一个奇怪的错误。
from sklearn.feature_selection import RFECV
from xgboost.sklearn import XGBRegressor
import sklearn.metrics
from sklearn.metrics import mean_absolute_error
estimator = XGBRegressor()
selector = RFECV(estimator, step=1, min_features_to_select=1, cv=10, scoring='neg_mean_absolute_error')
selector = selector.fit(x, y.values.flatten())
我的回归器已经运行顺利,但 selector.fit 没有。 对于 RFE 或 RFECV,我得到相同的结果:
~/miniconda2/envs/py3/lib/python3.6/site-packages/xgboost/sklearn.py in coef_(self)
714 .format(self.booster))
715 b = self.get_booster()
--> 716 coef = np.array(json.loads(b.get_dump(dump_format='json')[0])['weight'])
717 # Logic for multiclass classification
718 n_classes = getattr(self, 'n_classes_', None)
KeyError: 'weight'
提前谢谢。
我在 xgboost 版本中遇到了同样的问题:1.0.2。降级到版本 0.90 如下解决了该问题。
pip show xgboost
pip uninstall xgboost
pip install --upgrade xgboost==0.90
pip show xgboost
在 0.90 版中,我收到以下警告,该错误可能与使用(默认)reg:linear 作为指标有关。如果降级到 v 0.90,则无需执行任何操作并使用现有代码(如果它在升级前曾经工作)。
警告:C:/Jenkins/workspace/xgboost-win64_release_0.90/src/objective/regression_obj.cu:152:reg:linear 现已弃用,取而代之的是 reg:squarederror
您可以尝试在 XGBRegressor 中设置助推器选项:
estimator = XGBRegressor(booster='gbtree')
XGBoost中基本上有两种类型的助推器:线性和树(https://xgboost.readthedocs.io/en/latest/parameter.html)。有一些属性是每个属性所独有的。例如,给出错误的coef_
属性仅为线性学习器 (https://xgboost.readthedocs.io/en/latest/python/python_api.html) 定义,而feature_importances_
属性仅针对基于树的学习器定义。