Python Этикетки XGB не читают правильный размер этикетки - PullRequest
0 голосов
/ 05 мая 2020

Я получаю сообщение об ошибке при попытке запустить простой XGB. Ошибка упоминается ниже, но решение не помогает.

XGBoost Error info.labels.size ()! = 0U (0 против 0)

Ошибка выглядит следующим образом:

---------------------------------------------------------------------------
XGBoostError                              Traceback (most recent call last)
<ipython-input-748-7f7917b57181> in <module>
     11 param = {'max_depth':3, 'eta':1, 'objective':'binary:logistic'}
     12 
---> 13 bst = xgb.train(param, dtrain, num_round)
     14 preds = bst.predict(dtest)

~\AppData\Local\Continuum\anaconda3\envs\torch_env\lib\site-packages\xgboost\training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks)
    207                            evals=evals,
    208                            obj=obj, feval=feval,
--> 209                            xgb_model=xgb_model, callbacks=callbacks)
    210 
    211 

~\AppData\Local\Continuum\anaconda3\envs\torch_env\lib\site-packages\xgboost\training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)
     72         # Skip the first update if it is a recovery step.
     73         if version % 2 == 0:
---> 74             bst.update(dtrain, i, obj)
     75             bst.save_rabit_checkpoint()
     76             version += 1

~\AppData\Local\Continuum\anaconda3\envs\torch_env\lib\site-packages\xgboost\core.py in update(self, dtrain, iteration, fobj)
   1247             _check_call(_LIB.XGBoosterUpdateOneIter(self.handle,
   1248                                                     ctypes.c_int(iteration),
-> 1249                                                     dtrain.handle))
   1250         else:
   1251             pred = self.predict(dtrain, training=True)

~\AppData\Local\Continuum\anaconda3\envs\torch_env\lib\site-packages\xgboost\core.py in _check_call(ret)
    187     """
    188     if ret != 0:
--> 189         raise XGBoostError(py_str(_LIB.XGBGetLastError()))
    190 
    191 

XGBoostError: [15:11:21] C:/Users/Administrator/workspace/xgboost-win64_release_1.0.0/src/objective/regression_obj.cu:60: Check failed: preds.Size() == info.labels_.Size() (3843 vs. 0) : labels are not correctly providedpreds.size=3843, label.size=0

Таким образом, вышесказанное указывает на проблему с размером этикетки. Когда я запускаю следующий код, мои данные обучения (train_xgb) и данные моей метки (test_xgb) совпадают.

train_xgb = train_dummies.iloc[:, 2:]
test_xgb = train_dummies.iloc[:, 2]
print(train_xgb.shape, test_xgb.shape, type(train_xgb), type(test_xgb))

dtrain = xgb.DMatrix(train_xgb)
dtest = xgb.DMatrix(test_xgb)

Вот результат приведенного выше оператора печати: (3843, 3143) (3843,) <class 'pandas.core.frame.DataFrame'> <class 'pandas.core.series.Series'>

Я попытался изменить метки на их собственные массивы dataframe и numpy без изменений в ошибка.

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