R,xgboost:标签必须在 [0,1] 以进行逻辑回归
R, xgboost: label must be in [0,1] for logistic regression
我收到一条错误消息,提示我的标签必须位于 [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
数据类型,但没有成功。
问题是你的train.label
是一个因子,所以你的代码
as.numeric(train.label)
将生成一个包含 1 和 2 的向量。你想要 0 和 1 作为值,所以你需要使用。
as.numeric(as.character(train.label))
我收到一条错误消息,提示我的标签必须位于 [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
数据类型,但没有成功。
问题是你的train.label
是一个因子,所以你的代码
as.numeric(train.label)
将生成一个包含 1 和 2 的向量。你想要 0 和 1 作为值,所以你需要使用。
as.numeric(as.character(train.label))