跳到内容

将 XGBoost 模型保存到二进制或 JSON 格式的文件中。

用法

xgb.save(model, fname)

参数

model

xgb.Booster 类的模型对象。

fname

要写入的文件名。其扩展名决定序列化格式

  • ".ubj": 使用通用二进制 JSON 格式(推荐)。该格式使用二进制类型表示浮点数等,从而在转换为人类可读的 JSON 文本或类似格式时防止任何精度损失。

  • ".json": 使用纯 JSON 格式,这是一种人类可读的格式。

  • ".deprecated": 使用已弃用的二进制格式。此格式无法保存 XGBoost v1 后引入的属性,例如 booster 可能保留的 "best_iteration" 属性,也无法保存特征名称或用户指定的属性。

  • 如果未通过传递上述文件扩展名之一来指定格式,将默认为 UBJ。

详情

此方法允许将模型保存为 XGBoost 内部的二进制或文本格式,该格式在各种 xgboost 接口中通用。在 R 中,保存的模型文件稍后可以使用 xgb.load() 函数或 xgb.train()xgb_model 参数读取。

注意:模型也可以保存为 R 对象(例如,使用 readRDS()save())。但是,这样一来它将只与 R 兼容,并且需要使用相应的 R 方法来加载。此外,使用 readRDS()save() 持久化模型可能会导致未来版本的 XGBoost 中出现兼容性问题。请参阅 a-compatibility-note-for-saveRDS-save 了解如何以面向未来兼容的方式持久化模型,即让模型在 XGBoost 的未来版本中也能访问。

另请参阅

示例

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

## Keep the number of threads to 1 for examples
nthread <- 1
data.table::setDTthreads(nthread)

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 = nthread,
    objective = "binary:logistic"
  )
)

fname <- file.path(tempdir(), "xgb.ubj")
xgb.save(bst, fname)
bst <- xgb.load(fname)