How to save & load xgboost model? [closed] How to save & load xgboost model? [closed] python python

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)