Понимание num_classes для xgboost в R

У меня много проблем с выяснением, как правильно установить num_classes для xgboost.

У меня есть пример, используя данные Iris

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)

Это возвращает ошибку

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

Если я изменяю num_class на 2, я получаю ту же ошибку. Если я увеличу num_class до 4, то модель запустится, но я получу обратно 600 предсказанных вероятностей, что имеет смысл для 4 классов.

Я не уверен, что делаю ошибку или не понимаю, как работает xgboost. Любая помощь будет оценена.

Ответы на вопрос(1)

Ваш ответ на вопрос