XGBoost производит недвоичные прогнозы - PullRequest
0 голосов
/ 27 февраля 2019

После обучения моей модели с помощью XGBoost я попытался протестировать модель, но предсказания представляют собой некоторые виды чисел с плавающей запятой, которые вызывают ошибку, когда я хочу получить показатели производительности.Это код:

import xgboost as xgb
import sklearn.metrics as mt 

xg_reg = xgb.XGBRegressor(objective ='reg:linear', colsample_bytree = 0.3, learning_rate = 0.1,
            max_depth = 5, alpha = 10, n_estimators = 10)
xg_reg.fit(X_train,Y_train)
y_pred = xg_reg.predict(X_test)
mt.f1_score(Y_test, y_pred)

И это ошибка:

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

Этого никогда не случалось, когда я использовал другие повышающие модели, такие как AdaBoost или CatBoost.Должен ли я считать порог и назначить +1 для тех, кто выше порога, и -1 для тех, кто ниже порога?Любые советы приветствуются.

1 Ответ

0 голосов
/ 27 февраля 2019

Предполагая, что вы находитесь в бинарной классификации, как вы явно подразумеваете, проблема в том, что вы должны не использовать XGBRegressor, что для регрессии проблем, а не дляклассификационные;из документов (добавлено empasis):

class xgboost.XGBRegressor

Реализация API scikit-learn для XGBoost регрессия

Вместо этого следует использовать XGBClassifier.

Подробнее см. В собственном ответе в Значение точности ValueError: Не удается обработать смесь двоичных файлови постоянная цель (осторожно, потому что практически все остальные ответы, включая принятый и высоко оцененный, по существу неверны);это практически идентичная проблема с scikit-learn, но те же аргументы справедливы и для вашего случая.

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