使用 joblib 加载腌制的 scikit-learn 模型时出现 KeyError

新手上路,请多包涵

我有一个对象,其中包含两个 scikit-learn 模型,一个 IsolationForest 和一个 RandomForestClassifier --- 模型,我想稍后制作预测和使用.除了这两个模型之外,该对象还包含几个 StandardScaler 和几个 Python 列表。

使用 joblib 这个对象是没有问题的,但是当我稍后尝试取消腌制它时,我得到以下异常:

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/home/(...)/python3.5/site-packages/joblib/numpy_pickle.py", line 578, in load
   obj = _unpickle(fobj, filename, mmap_mode)
 File "/home/(...)/python3.5/site-packages/joblib/numpy_pickle.py", line 508, in _unpickle
   obj = unpickler.load()
 File "/usr/lib/python3.5/pickle.py", line 1039, in load
   dispatch[key[0]](self)
KeyError: 0

同一应用程序对对象进行 pickle 和 unpickles,因此 scikit-learnjoblib 和其他库的版本是相同的。鉴于模糊的错误,我不确定从哪里开始调试。有什么想法或指示吗?

原文由 haroba 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

对此的解决方案非常平庸:在没有意识到的情况下,我使用了 joblib 的版本 sklearn.externals.joblib 进行酸洗,但更新版本的 joblib 用于取消对象。当我对这两个任务使用更新版本的 joblib 时,问题得到解决。

原文由 haroba 发布,翻译遵循 CC BY-SA 3.0 许可协议

和我一起,碰巧我使用 from sklearn.externals import joblib 导出模型并尝试使用 import joblib 加载。

原文由 Marcos Paulo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题