Объект XGBModel не имеет атрибута evals_result_ - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь использовать xgboost для набора данных.Я видел один и тот же синтаксис в разных блогах, но я получаю сообщение об ошибке при вызове clf.evals_result (). Вот мой код

from xgboost import XGBRegressor as xgb
from sklearn.metrics import mean_absolute_error as mae

evals_result ={}
eval_s = [(x, y),(xval,yval)]

clf = xgb(n_estimators=100,learning_rate=0.03,tree_method='gpu_hist',lamda=0.1,eval_metric='mae',eval_set=eval_s,early_stopping_rounds=0,evals_result=evals_result)

clf.fit(x,y) 

r = clf.evals_result()

. Вот ошибка, которую я получаю

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-138-2d6867968043> in <module>
      1 
----> 2 r = clf.evals_result()
      3 
      4 p = clf.predict(xval)

/opt/conda/lib/python3.6/site-packages/xgboost/sklearn.py in evals_result(self)
    399          'validation_1': {'logloss': ['0.41965', '0.17686']}}
    400         """
--> 401         if self.evals_result_:
    402             evals_result = self.evals_result_
    403         else:

AttributeError: 'XGBRegressor' object has no attribute 'evals_result_'

1 Ответ

0 голосов
/ 15 января 2019

Я получил точно такую ​​же ошибку, решение состоит в том, чтобы передать eval_set в функцию подгонки, а не в создании классификатора

clf.fit(x,y,eval_set=eval_s) 

Затем вы можете запустить clf.evals_result ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...