【问题标题】:Correct way to save and load Sklearn's CalibratedClassifierCV保存和加载 Sklearn 的 CalibratedClassifierCV 的正确方法
【发布时间】:2020-04-28 17:49:13
【问题描述】:

与最初拟合模型并运行 predict_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)

正如我所说,第一组代码运行良好,但我正在创建一个机器学习管道,我不想每次获得新数据时都必须训练一个新模型,因为我想限制处理时间和我想评估相同模型超时的性能(这很关键)。任何见解都会有所帮助,谢谢!

【问题讨论】:

    标签: python scikit-learn pickle calibration


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2015-07-04
      • 2021-04-04
      • 2022-01-09
      • 1970-01-01
      • 2018-04-16
      • 2015-10-07
      • 2017-10-20
      • 1970-01-01
      相关资源
      最近更新 更多