xgb.Booster.complete {xgboost} | R Documentation

## Restore missing parts of an incomplete xgb.Booster object.

### Description

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).

### Usage

    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.

### 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.

### Value

An object of `xgb.Booster` class.

### 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")
    saveRDS(bst, "xgb.model.rds")

    bst1 <- readRDS("xgb.model.rds")
    if (file.exists("xgb.model.rds")) file.remove("xgb.model.rds")
    # the handle is invalid:
    print(bst1$handle)

    bst1 <- xgb.Booster.complete(bst1)
    # now the handle points to a valid internal booster model:
    print(bst1$handle)

[Package xgboost version 0.90.0.2 Index]