Ich habe viel Mühe herauszufinden, wie die num_classes für xgboost richtig gesetzt werden.Verstehen von num_classes für xgboost in R
Ich habe ein Beispiel mit der Iris-Daten bekam
df <- iris
y <- df$Species
num.class = length(levels(y))
levels(y) = 1:num.class
head(y)
df <- df[,1:4]
y <- as.matrix(y)
df <- as.matrix(df)
param <- list("objective" = "multi:softprob",
"num_class" = 3,
"eval_metric" = "mlogloss",
"nthread" = 8,
"max_depth" = 16,
"eta" = 0.3,
"gamma" = 0,
"subsample" = 1,
"colsample_bytree" = 1,
"min_child_weight" = 12)
model <- xgboost(param=param, data=df, label=y, nrounds=20)
dies ein Fehler zurückgibt
Error in xgb.iter.update(bst$handle, dtrain, i - 1, obj) :
SoftmaxMultiClassObj: label must be in [0, num_class), num_class=3 but found 3 in label
Wenn ich die num_class bis 2 wechsle ich den gleichen Fehler. Wenn ich die num_class auf 4 erhöhe, dann läuft das Modell, aber ich bekomme 600 vorhergesagte Wahrscheinlichkeiten zurück, was für 4 Klassen sinnvoll ist.
Ich bin mir nicht sicher, ob ich einen Fehler mache oder ob ich nicht verstehe, wie xgboost funktioniert. Jede Hilfe wäre willkommen.
'num_class' ist die Anzahl der verschiedenen Klassen für Klassifizierungsprobleme. In Ihrem Fall mit 'Iris'-Datensatz sollte es auf 3 gesetzt werden. –
Es ist auf 3 gesetzt. Der Fehler, den ich oben eingefügt habe, stammt von dieser Einstellung. – House
Würden Sie bitte die Ausgabe von 'unique (y)' posten? –