Это ошибка с функцией поезда xgboost()
? Метки поезда обновляются как numeric
, но все же я вижу ту же ошибку, что метки должны быть [0,1] для лог рег.
Что я пробовал.
Первый метод.
train.y <- as.factor(train.y)
levels(train.y)[levels(train.y) =='klar'] <- 0
levels(train.y)[levels(train.y) =='trüb'] <- 1
train.y <- as.numeric(train.y)
1010 * Альтернативный *
Второй метод.
train.y <- as.numeric(as.factor(train.y))
> class(train.y)
[1] "numeric"
# convert dataset into Dmatrix
dtrain <- xgb.DMatrix(data =as.matrix(train.x), label= train.y)
# train model
model.xgb <- xgboost(data = dtrain, # the data
max.depth = 3,
nround = 50, # boosting iterations
objective = "binary:logistic") # the objective function
Error
Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) :
[12:55:32] amalgamation/../src/objective/regression_obj.cc:98: Check failed: Loss::CheckLabel(y) label must be in [0,1] for logistic regression
Как я могу обойти это?
Похожая проблема зарегистрирована здесь . Я сообщил об этом здесь , но на всякий случай, если кто-то уже решил это.
Вот воспроизводимый пример.
Воспроизводимый пример
train.x <- matrix(rexp(5000), ncol = 10)
train.y <- rep(c('klar', 'trüb'), times=250)
train.y <- as.numeric(as.factor(train.y))
dtrain <- xgb.DMatrix(as.matrix(train.x), label=train.y)