Невозможно использовать XGBRegressor со sklearn RFE - PullRequest
1 голос
/ 02 апреля 2020

ПОМОГИТЕ, этот простой код выдает странную ошибку.

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'

Заранее спасибо.

1 Ответ

0 голосов
/ 07 апреля 2020

Я встретил ту же проблему в версии 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 как metri c. Если вы понизили версию до 0.90, вам не нужно ничего делать и использовать существующий код (если он работал до обновления).

ПРЕДУПРЕЖДЕНИЕ: C: / Jenkins / workspace / xgboost-win64_release_0.90 / src / target / regression_obj.cu: 152: reg: linear теперь не поддерживается в пользу reg: squarederror

...