XGBoost `.predict ()` без метки или целевого столбца? - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь использовать XGBoost для прогнозирования набора данных, в котором тестовый набор данных не имеет меток. Как я могу сделать так, чтобы модель xgboost не отказала, если целевой столбец не указан?

# TRAIN_DATA looks similar to TEST_DATA except TEST_DATA does not have a `target` column

import xgboost as xgb
# read in data
dtrain = xgb.DMatrix(TRAIN_DATA, label=TRAIN_DATA.target)
dtest = xgb.DMatrix(TEST_DATA)
# specify parameters via map
param = {'max_depth':2, 'eta':1, 'objective':'binary:logistic' }
num_round = 2
bst = xgb.train(param, dtrain, num_round)
# make prediction
preds = bst.predict(dtest)

Вывод:

                raise ValueError(msg.format(self.feature_names,
>                                           data.feature_names))
E               ValueError: feature_names mismatch: ['geohash', 'uupm', 'driver_supply', 'requested_at', 'target'] ['geohash', 'uupm', 'driver_supply', 'requested_at']
E               expected target in input data

../venvs/venv3/lib/python3.6/site-packages/xgboost/core.py:1541: ValueError

1 Ответ

1 голос
/ 21 июня 2020

Попробуйте следующий код:

Выберите все столбцы, кроме target, как показано ниже

TRAIN_DATA[TRAIN_DATA.columns.difference(['target'])]

вы можете изменить в своем коде для обучения ваших функций:

dtrain = xgb.DMatrix(TRAIN_DATA[TRAIN_DATA.columns.difference(['target'])], label=TRAIN_DATA.target)

В идеале для обучения вы не должны раскрывать свой столбец target для функции.

Вы можете делать вывод без каких-либо проблем.

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