How to save & load xgboost model? [closed]
I found my way here because I was looking for a way to save and load my xgboost model. Here is how I solved my problem:
import picklefile_name = "xgb_reg.pkl"# savepickle.dump(xgb_model, open(file_name, "wb"))# loadxgb_model_loaded = pickle.load(open(file_name, "rb"))# testind = 1test = X_val[ind]xgb_model_loaded.predict(test)[0] == xgb_model.predict(test)[0]Out[1]: True
Both functions save_model
and dump_model
save the model, the difference is that in dump_model
you can save feature name and save tree in text format.
The load_model
will work with model from save_model
. The model from dump_model
can be used for example with xgbfi.
During loading the model, you need to specify the path where your models is saved. In the example bst.load_model("model.bin")
model is loaded from file model.bin
- it is just a name of file with model. Good luck!
EDIT: From Xgboost documentation (for version 1.3.3
), the dump_model()
should be used for saving the model for further interpretation. For saving and loading the model the save_model()
and load_model()
should be used. Please check the docs for more details.
There is also a difference between Learning API
and Scikit-Learn API
of Xgboost. The latter saves the best_ntree_limit
variable which is set during the training with early stopping. You can read details in my article How to save and load Xgboost in Python?
The save_model()
method recognize the format of the file name, if *.json
is specified, then model is saved in JSON, otherwise it is text file.
An easy way of saving and loading a xgboost model is with joblib library.
import joblib#save modeljoblib.dump(xgb, filename) #load saved modelxgb = joblib.load(filename)