加载对象时,Pickle EOF错误



我保存了一个模型对象,如下所示:

with open('bestModel_smv_3class_version2data.pickle','wb') as f:
    pickle.dump(jpsa_svm_3class.g_cv.best_estimator_,f)

现在,当我尝试加载它时,它会产生错误

with open('bestModel_smv_3class_version2data.pickle','rb') as f:
    svm_bestModel=pickle.load(f)

错误:

EOFError                                  Traceback (most recent call last)
<ipython-input-66-df8734c64828> in <module>()
      8 
      9 with open('bestModel_smv_3class_version2data.pickle','rb') as f:
---> 10     svm_bestModel=pickle.load(f)
EOFError: Ran out of input

pickle在包含numpy数组时无法处理sklearn模型。改用joblib.dump,它是相似的,但是它们有特殊的外壳保存/加载大型numpy阵列。

https://pythonhosted.org/joblib/persistence.html

最新更新