跳到内容

将 XGBoost 模型转储为文本格式。

用法

xgb.dump(
  model,
  fname = NULL,
  fmap = "",
  with_stats = FALSE,
  dump_format = c("text", "json", "dot"),
  ...
)

参数

model

模型对象。

fname

保存模型文本转储的文本文件名称。如果未提供或设置为 NULL,模型将作为字符向量返回。

fmap

表示特征类型的特征映射文件。请参阅 demo/ 以获取 R 中的详细示例,以及 https://github.com/dmlc/xgboost/blob/master/demo/data/featmap.txt 以查看该值的示例。

with_stats

是否转储有关分裂的一些附加统计信息。当此选项打开时,模型转储包含两个附加值:gain 是我们在每次分裂中获得的近似损失函数增益;cover 是每个节点中二阶梯度的总和。

dump_format

可以指定 'text', 'json' 或 'dot' (graphviz) 格式。

单棵树的 'dot' 格式可以直接传递给使用此格式进行图可视化的包,例如函数 DiagrammeR::grViz()

...

未使用。

在以前的 XGBoost 版本中属于此函数一部分的一些参数目前已被弃用或已重命名。如果传递了已弃用或已重命名的参数,将(默认情况下)抛出警告并使用其当前等效参数。如果使用 '严格模式' 选项,此警告将变为错误。

如果传递了既不是当前函数参数,也不是已弃用或已重命名的参数的附加参数,将根据 '严格模式' 选项抛出警告或错误。

重要: ... 将在未来版本中移除,并且所有当前的弃用警告将变为错误。请仅使用构成函数签名一部分的参数。

如果未提供或设置为 NULL,函数将把模型作为字符向量返回。否则将返回 TRUE

示例

DONTSHOW({RhpcBLASctl::omp_set_num_threads(1)})
data(agaricus.train, package = "xgboost")
data(agaricus.test, package = "xgboost")

train <- agaricus.train
test <- agaricus.test

bst <- xgb.train(
  data = xgb.DMatrix(train$data, label = train$label, nthread = 1),
  nrounds = 2,
  params = xgb.params(
    max_depth = 2,
    nthread = 2,
    objective = "binary:logistic"
  )
)

# save the model in file 'xgb.model.dump'
dump_path = file.path(tempdir(), 'model.dump')
xgb.dump(bst, dump_path, with_stats = TRUE)

# print the model without saving it to a file
print(xgb.dump(bst, with_stats = TRUE))

# print in JSON format:
cat(xgb.dump(bst, with_stats = TRUE, dump_format = "json"))

# plot first tree leveraging the 'dot' format
if (requireNamespace('DiagrammeR', quietly = TRUE)) {
  DiagrammeR::grViz(xgb.dump(bst, dump_format = "dot")[[1L]])
}