У меня проблема мультиклассовой классификации с 3 классами [-1,0,1].Я хотел бы использовать eval_set в xgboost.но происходит сбой с ошибкой:
rank_metric.cc:88: Check failed: preds.size() == info.labels_.size() (270
vs. 90) label size predict size not match'
при запуске
modelfit=model.fit(Xtrain,ytrain)
работает нормально
modelfit=model.fit(Xtrain,ytrain,eval_set = [(Xtest, ytest)])
выдает ошибку выше
я пыталсявсе eval_metric доступны для мультикласса, и все они генерируют одну и ту же ошибку.
модель выглядит следующим образом:
xgb.XGBClassifier(n_jobs = -1,objective = 'multi:softmax',
num_class=3, eval_metric = 'mlogloss',
tree_method='approx', scale_pos_weight=1,
**{'subsample':0.5,'colsample_bylevel':1, 'colsample_bytree':
1, 'gamma':0, 'learning_rate':0.3,'max_delta_step': 0, 'max_depth': 10,
'min_child_weight': 1, 'n_estimators': 10, 'reg_alpha': 0, 'reg_lambda':
0})
ipdb> modelfit.predict(Xtest)
array([-1., -1., -1., -1., -1., -1., -1., 1., -1., -1., -1., 1., 1.,
1., -1., 1., 0., -1., 1., 1., 1., -1., -1., 1., 1., 1.,
1., 1., 1., 0., 0., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., 1., -1., -1., -1., -1., -1.,
0., 1., 1., 1., 1., 1., 1., -1., -1., -1., -1., -1.])
ipdb> len(modelfit.predict(Xtest))
90
ipdb> len(ytest)
90
ipdb> ytest
array([-1., -1., -1., -1., -1., -1., -1., 0., -1., 1., 0., 1., 0.,
1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., -1., -1., -1., -1., -1., -1., -1., -1., 0., 0., 1.,
1., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.,
-1., -1., -1., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
, как видно из выходных данных отладчика, len of предиката (Xtest) и ytest равны 90почему xgboost генерирует ошибку?