Reputation: 71
Here is my code:
xgb <- xgboost(data = as.matrix(df_all_combined),
label = as.matrix(target_train),
eta = 0.1,
max_depth = 15,
nround=100,
subsample = 0.5,
colsample_bytree = 0.5,
seed = 1,
eval_metric = "auc",
objective = "binary:logistic",
num_class = 12,
nthread = 3)
Getting the below Error:
Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) : [09:17:34] amalgamation/../src/objective/regression_obj.cc:90: Check failed: (preds.size()) == (info.labels.size()) labels are not correctly providedpreds.size=840756, label.size=70063
Could anyone help me out to solve this issue? Not able to figure out the issue.
Upvotes: 7
Views: 13144
Reputation: 45
The Objective and num_class donot seem to be in sync From xgboost parameter description : objective "binary:logistic: logistic regression for binary classification, output probability"
And in your question the mentioned num_class =12 ,this seems to be a mismatch as binary objective is used to predict variables belonging to 2 classes only (0/1).
Upvotes: 0
Reputation: 25
Xgboost has a bug with multiclass classification. It uses preds.size () = info.labels.size() * num_classes, while using 'auc' which is wrong. So use any other metric like merror.
Upvotes: 0
Reputation: 4170
The error says:
labels are not correctly provided preds.size=840756, label.size=70063
This means that number of rows in df_all_combined
does not correspond to the number of rows in target_train
So target_train
should be of the shape (840756,)
Upvotes: 1