保存和加载 Sklearn 校准分类器CV的正确方法



与最初拟合模型并运行predict_proba时相比,当我加载CalibratedClassifierCV并运行predic_proba时,我会遇到不同的预测。你知道为什么会这样吗?数据和模型参数是相同的,但预测却大不相同。下面是我使用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)

但是,如果我从新开始(即清除变量(,加载模型并进行预测,我的输出与上面的输出大不相同:

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管道,我不想每次获得新数据时都必须训练一个新模型,因为我想限制处理时间,并且我想评估同一模型的性能(这很关键(。任何见解都会有所帮助,谢谢!

事实证明,错误在于,在训练模型中,我的因素在数据中的顺序与从加载的模型中运行新数据的顺序不同。新手的错误我想我会把这个放在这里,以防其他人遇到类似的问题。

最新更新