avant que je suis assez nouveau à la fois xgboost et R.xgboost erreur de classification multinomiale: « étiquette et la taille prédiction ne correspond aux »
J'utilise xgboost dans R pour effectuer une classification multinomiale sur mes données dtrain
. L'étiquette J'utilise a six niveaux, de sorte que mon code ressemble à ceci:
param1 <- list(objective = "multi:softprob"
, num_class = 6
, booster = "gbtree"
, eta = 0.5
, max.depth = 7
, min_child_weight = 10
, max_delta_step = 5
, subsample = 0.8
, colsample_bytree = 0.8
, lambda = 3 # L2
, alpha = 5 # L1
)
set.seed(2016)
xgbcv1 <- xgb.cv(params = param1, data = dtrain, nround = 3000, nfold = 3,
metrics = list("error", "auc"), maximize = T,
print_every_n = 10, early_stopping_rounds = 10)
Cela me jette l'erreur suivante:
Error in xgb.iter.update(fd$bst, fd$dtrain, iteration - 1, obj) :
amalgamation/../src/objective/multiclass_obj.cc:75: Check failed:
label_error >= 0 && label_error < nclass SoftmaxMultiClassObj: label must be in [0, num_class), num_class=6 but found 6 in label.
J'ai essayé de mettre num_class = 7
, qui jette cette erreur:
Error in xgb.iter.eval(fd$bst, fd$watchlist, iteration - 1, feval) :
amalgamation/../src/metric/elementwise_metric.cc:28: Check failed:
(preds.size()) == (info.labels.size()) label and prediction size not match, hint: use merror or mlogloss for multi-class classification
Que se passe-t-il ici? Est-ce que num_class
doit être supérieur à label_error
ou égal à celui-ci?
pls utilisent 'dput()' partager vos données, ... – BigDataScientist
L'avez-vous surmonté à la fin? J'ai trouvé une solution qui a fonctionné pour moi. Spécifiquement pour ma variable y, 'set y <- y - 1' (je ne vois pas de variable cible dans votre appel à xgb) https://stackoverflow.com/questions/36086529/understanding-num-classes-for- xgboost-in-r –