与我最初拟合模型并运行Forecast_proba相比,加载CalibratedClassiferCV并运行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)
正如Ive所说,第一组代码可以正常工作,但是我正在创建ML管道,并且我不想每次获取新数据时都必须训练新模型,因为我想限制处理时间和我想评估同一模型的超时性能(这很关键)。任何见解都会有所帮助,谢谢!
答案 0 :(得分:0)
发现错误是,在训练模型中我的因素在数据中的顺序与从加载的模型中运行新数据时的顺序是不同的。我认为是新手错误,如果有人遇到类似问题,我会坚持下去。