跳到内容

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

用法

xgb.save(model, fname)

参数

model

xgb.Booster类的模型对象。

fname

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

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

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

  • ".deprecated":使用已弃用的二进制格式。此格式将无法保存XGBoost v1之后引入的属性,例如助推器可能保留的“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)