将 XGBoost 模型保存到二进制或 JSON 格式的文件中。
参数
- 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)