Как сохранить и загрузить модель xgboost?
По ссылке руководства XGBoost,
- Модель может быть сохранена.
bst.save_model('0001.model')
- Модель и ее карта функций также могут быть сброшены в текстовый файл.
bst.dump_model('dump.raw.txt') # dump model bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
- Сохраненная модель может быть загружена следующим образом:
bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data
Мой вопрос:
- Какая разница между
save_model
и dump_model
? - какая разница между сохранением
'0001.model'
и 'dump.raw.txt','featmap.txt'
? - почему имя модели для загрузки
model.bin
отличается от имени, которое нужно сохранить 0001.model
? - Предположим, что я подготовил две модели
model_A
и model_B
, я хотел сохранить обе модели для будущего использования, какую функцию save
и load
следует использовать? Не могли бы вы показать четкий процесс?
Ответы
Ответ 1
Обе функции save_model
и dump_model
сохраняют модель, разница в том, что в dump_model
вы можете сохранить имя функции и сохранить дерево в текстовом формате.
load_model
будет работать с моделью save_model
. Модель из dump_model
может использоваться, например, с помощью xgbfi.
Во время загрузки модели вам необходимо указать путь, в котором сохраняются ваши модели. В примере bst.load_model("model.bin")
загружается из файла model.bin
- это просто имя файла с моделью. Удачи!
Ответ 2
Простым способом сохранения и загрузки модели xgboost является библиотека joblib.
import joblib
#save model
joblib.dump(xgb, filename)
#load saved model
xgb = joblib.load(filename)
Ответ 3
Я нашел свой путь здесь, потому что искал способ сохранить и загрузить мою модель xgboost. Вот как я решил свою проблему:
import pickle
file_name = "xgb_reg.bin"
# save
pickle.dump(xgb_model, open(file_name, "wb"))
# load
xgb_model_loaded = pickle.load(open(file_name, "rb"))
# test
ind = 1
test = X_val[ind]
xgb_model_loaded.predict(test)[0] == xgb_model.predict(test)[0]
Out[1]: True