Ниже показано, как я обучил XGBClassifier и сохранил его:
import pickle
from xgboost import XGBClassifier
# train
model = XGBClassifier()
model.fit(X, y)
# export
pickle.dump(model, open('model.pickle', 'wb'))
Вот как я загрузил модель и сделал прогнозы
loaded_model = pickle.load(open('model.pickle', 'rb'))
y_pred = loaded_model.predict(X)
Прогнозы модели в порядке, если модель был загружен из того же процесса python, в котором проводилось обучение, но прогнозы не были в порядке (случайные), если модель была загружена из процесса python, отличного от того, который использовался для обучения.
Обратите внимание, у меня та же проблема, если вместо засолки были использованы model.save_model
и model.load_model
.
Простые проверки, которые я сделал, показывают, что модель была сохранена и загружена правильно; дампы model._Booster
(приобретенные через model._Booster.dump_model(some_file)
) и loaded_model._Booster
идентичны.
Python версия: 3.7.5
версия xgboost: пробовал 0,80 и 0,90
Любое предложение приветствуется.