我有一个对象,其中包含两个 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-learn
、 joblib
和其他库的版本是相同的。鉴于模糊的错误,我不确定从哪里开始调试。有什么想法或指示吗?
原文由 haroba 发布,翻译遵循 CC BY-SA 4.0 许可协议
对此的解决方案非常平庸:在没有意识到的情况下,我使用了
joblib
的版本sklearn.externals.joblib
进行酸洗,但更新版本的joblib
用于取消对象。当我对这两个任务使用更新版本的joblib
时,问题得到解决。