CARET xgbtree警告:`ntree_limit`已弃用,请改用`iteration_range`。

9
cv <- trainControl(
  method = "cv",
  number = 5,
  classProbs = TRUE,
  summaryFunction = prSummary,
  seeds = set.seed(123))

turn_grid_xgb <- expand.grid(
  eta = c(0.1,0.3,0.5),
  max_depth = 5,
  min_child_weight = 1,
  subsample = 0.8,
  colsample_bytree = 0.8,
  nrounds = (1:10)*200,
  gamma = 0)

set.seed(123)
suppressWarnings({
  xgb_1 <- train(label~., data = baked_train, 
             method = "xgbTree",
             tuneGrid = turn_grid_xgb,
             trControl = cv,
             verbose = FALSE,
             metric = "F")

嗨,当我尝试运行上述代码时,在 R 控制台中显示了以下警告信息。有人知道如何消除它吗?我已经尝试在块设置上使用 suppressWarnings()warning = FALSE,但它仍然存在。

谢谢!!

WARNING: amalgamation/../src/c_api/c_api.cc:718: `ntree_limit` is deprecated, use `iteration_range` instead.
[02:15:13] WARNING: amalgamation/../src/c_api/c_api.cc:718: `ntree_limit` is deprecated, use `iteration_range` instead.
[02:15:13] WARNING: amalgamation/../src/c_api/c_api.cc:718: `ntree_limit` is deprecated, use `iteration_range` instead.
1个回答

7
为了消除xgboost的警告,您可以设置verbosity = 0,这将由caret::train传递给xgboost调用:
library(caret)
library(mlbench)
data(Sonar)


cv <- trainControl(
  method = "cv",
  number = 5,
  classProbs = TRUE,
  summaryFunction = prSummary,
  seeds = set.seed(123))

turn_grid_xgb <- expand.grid(
  eta = 0.1,
  max_depth = 5,
  min_child_weight = 1,
  subsample = 0.8,
  colsample_bytree = 0.8,
  nrounds = c(1,5)*200,
  gamma = 0)

set.seed(123)

xgb_1 <- train(Class~., data = Sonar, 
               method = "xgbTree",
               tuneGrid = turn_grid_xgb,
               trControl = cv,
               verbose = FALSE,
               metric = "F",
               verbosity = 0)

当前的警告意味着xgboost正在更改参数名称,但caret仍在提供旧名称。目前它可以工作,但是随着新的xgboost版本,该参数将被完全替换,如果caret函数代码在那时没有更新,警告将被错误取代。

这个警告信息可能需要解决吗?还是可以简单地忽略它? - User2321
2
当前的警告意味着xgboost正在更改参数的名称,但caret仍在提供旧名称。目前它可以工作,但是对于新的xgboost版本,该参数将被完全替换,如果caret的函数代码在那时没有更新,那么警告将被替换为错误。 - missuse
谢谢@missuse - 我知道警告的原因,但现在只想暂时抑制它 - 这非常有帮助! - user2017023
但是我没有使用ntree_limit参数,为什么会有提示信息提醒我呢? - cloudscomputes
Caret可能在内部使用此方法。 - missuse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接