Как решить XGBoost SoftmaxMultiClassObj: метка должна быть в [0, num_class) ошибка? - PullRequest
0 голосов
/ 12 марта 2020

Я работаю над созданием модели с использованием XGBoost для прогнозирования заражений вирусом короны на основе кодов провинций и регионов. набор данных: https://www.kaggle.com/sudalairajkumar/covid19-in-italy.

Я разбил данные, но при попытке настроить модель выдает следующую ошибку:

XGBoostError: [16:16:15] C:/Users/Administrator/workspace/xgboost- 
win64_release_1.0.0/src/objective/multiclass_obj.cu:115: 
SoftmaxMultiClassObj: label must be in [0, num_class).

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

train = df[['RegionCode','ProvinceCode']].astype(int)
test = df['TotalPositiveCases'].astype(int)
X_test, X_train, y_test, y_train = train_test_split(train, test, 
test_size=0.30, random_state=42)

train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)

param = {
'max_depth':4,
'eta':0.3,
'objective': 'multi:softmax',
'num_class': 3}
epochs = 10

model = xgb.train(param, train, epochs)

атрибут модели, где я получаю ошибку

1 Ответ

0 голосов
/ 12 марта 2020

Эта ошибка возникает, когда в объектах цели больше меток, чем указано в параметре num_class.

Вам следует проверить, имеет ли ваша цель больше функций, чем параметров num_class, или вы можете напечатать target.unique (), так как в данных может быть несколько нулей или NAN.

...