跳到内容

创建一个新的 booster,仅包含现有 booster 中选定的轮次/迭代范围,由序列 seq(start, end, step) 指定。

用法

xgb.slice.Booster(
  model,
  start,
  end = xgb.get.num.boosted.rounds(model),
  step = 1L
)

# S3 method for class 'xgb.Booster'
x[i]

参数

model, x

一个已拟合的 xgb.Booster 对象,将通过仅选取其部分轮次/迭代进行切片。

start

切片的起始位置(从 1 开始计数,包含在内,类似于 R 的 seq() 函数)。

end

切片的结束位置(从 1 开始计数,包含在内,类似于 R 的 seq() 函数)。在此处传入零值等同于传入 booster 对象中的总轮次数。

step

切片的步长。传入 '1' 将选取由 (start, end) 定义的序列中的每一轮,而传入 '2' 将选取每隔一轮的值,依此类推。

i

索引 - 必须是由例如 seq(...) 生成的递增序列。

一个切片后的 booster 对象,仅包含请求的轮次。

详情

请注意,booster 可能具有的任何 R 属性将不会复制到结果对象中。

示例

data(mtcars)

y <- mtcars$mpg
x <- as.matrix(mtcars[, -1])

dm <- xgb.DMatrix(x, label = y, nthread = 1)
model <- xgb.train(data = dm, params = xgb.params(nthread = 1), nrounds = 5)
model_slice <- xgb.slice.Booster(model, 1, 3)
# Prediction for first three rounds
predict(model, x, predleaf = TRUE)[, 1:3]

# The new model has only those rounds, so
# a full prediction from it is equivalent
predict(model_slice, x, predleaf = TRUE)