我收到错误消息,说我的标签必须在[0,1]中:
> system.time(xgb <- xgboost(params = param,
+ data = dtrain,
+ label = as.numeric(train.label),
+ nrounds = 500,
+ print_every_n = 100,
+ verbose = 1))
Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) :
[10:39:29] amalgamation/../src/objective/regression_obj.cc:108: label must be in [0,1] for logistic regression
Timing stopped at: 0.11 0 0.11
但是,我的标签是[0,1]:
> train.label
[1] 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 . . .
[ reached getOption("max.print") -- omitted 38907 entries ]
Levels: 0 1
我也尝试过没有运气转换为numeric
数据类型。
答案 0 :(得分:5)
问题是您的train.label
是一个因素,所以您的代码
as.numeric(train.label)
将生成包含1和2的向量。您希望将0和1作为值,因此您需要使用。
as.numeric(as.character(train.label))