It attempts to complete an xgb.Booster object by restoring either its missing raw model memory dump (when it has no raw data but its xgb.Booster.handle is valid) or its missing internal handle (when its xgb.Booster.handle is not valid but it has a raw Booster memory dump).

xgb.Booster.complete(object, saveraw = TRUE)

Arguments

object

object of class xgb.Booster

saveraw

a flag indicating whether to append raw Booster memory dump data when it doesn't already exist.

Value

An object of xgb.Booster class.

Details

While this method is primarily for internal use, it might be useful in some practical situations.

E.g., when an xgb.Booster model is saved as an R object and then is loaded as an R object, its handle (pointer) to an internal xgboost model would be invalid. The majority of xgboost methods should still work for such a model object since those methods would be using xgb.Booster.complete internally. However, one might find it to be more efficient to call the xgb.Booster.complete function explicitly once after loading a model as an R-object. That would prevent further repeated implicit reconstruction of an internal booster model.

Examples

data(agaricus.train, package='xgboost') bst <- xgboost(data = agaricus.train$data, label = agaricus.train$label, max_depth = 2, eta = 1, nthread = 2, nrounds = 2, objective = "binary:logistic")
#> [1] train-error:0.046522 #> [2] train-error:0.022263
saveRDS(bst, "xgb.model.rds") bst1 <- readRDS("xgb.model.rds") if (file.exists("xgb.model.rds")) file.remove("xgb.model.rds")
#> [1] TRUE
# the handle is invalid: print(bst1$handle)
#> <pointer: (nil)> #> attr(,"class") #> [1] "xgb.Booster.handle"
bst1 <- xgb.Booster.complete(bst1) # now the handle points to a valid internal booster model: print(bst1$handle)
#> <pointer: 0xf68f620> #> attr(,"class") #> [1] "xgb.Booster.handle"