R,xgboost:标签必须在[0,1]中才能进行逻辑回归

时间:2018-02-27 01:06:08

标签: r xgboost

我收到错误消息,说我的标签必须在[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数据类型。

1 个答案:

答案 0 :(得分:5)

问题是您的train.label是一个因素,所以您的代码

as.numeric(train.label)

将生成包含1和2的向量。您希望将0和1作为值,因此您需要使用。

as.numeric(as.character(train.label))