Правильный способ сохранить и загрузить Sklearn's CalibratedClassifierCV - PullRequest
0 голосов
/ 28 апреля 2020

Я сталкиваюсь с различными предсказаниями, когда загружаю свой CalibratedClassiferCV и запускаювести на Предикат по сравнению с тем, когда я вначале соответствовал модели и запускал предикат. Есть идеи, почему это может быть? Данные и параметры модели совпадают, но прогнозы сильно различаются. Ниже приведен мой код с использованием pickle, но я пробовал также и с joblib с теми же результатами.

Следующее работает отлично:

#Train and fit model
clf=RandomForestClassifier(random_state=0, n_estimators=1800, max_features='auto', max_depth=100, min_samples_split=2, min_samples_leaf=1, bootstrap=False)
cccv=CalibratedClassifierCV(clf,method='sigmoid',cv=5)
cccv.fit(X_train, y_train)
#save model
filename='TESTwCV_04272020.sav'
pickle.dump(cccv,open(filename,'wb'))
#load model and make predictions from loaded model
model = pickle.load(open(filename,'rb'))
cccv_final_probs=model.predict_proba(X_final)[:,1]
cccv_final_pred=model.predict(X_final)

Но если бы я запустил fre sh ( очистить переменные), загрузить модель и сделать прогнозы, мой вывод сильно отличается от вывода выше:

filename='TESTwCV_04272020.sav'
model = pickle.load(open(filename,'rb'))
cccv_final_probs=model.predict_proba(X_final)[:,1]
cccv_final_pred=model.predict(X_final)

Как я уже говорил, первый набор кода работает нормально, но я создаю ML конвейер, и мне не нужно обучать новую модель каждый раз, когда я получаю новые данные, так как я хочу ограничить время обработки и хочу оценить производительность той же модели в сверхурочное время (это очень важно). Любые идеи будут полезны, спасибо!

1 Ответ

0 голосов
/ 29 апреля 2020

Оказывается, ошибка была в том, что порядок моих факторов в моих данных отличался в модели обучения от того, когда я запускал новые данные из загруженной модели. Newb ie ошибка, которую я решил, я бы оставил здесь, если бы кто-то столкнулся с подобной проблемой.

...