我有一个包含两个scikit-learn
模型的对象,一个是IsolationForest
,另一个是RandomForestClassifier
,我想把它存储下来并在以后重新加载并用于产生预测。除了这两个模型之外,该对象还包含一些StandardScaler
和几个Python列表。
使用joblib
对此对象进行pickle没有问题,但是当我尝试稍后进行unpickle时,会出现以下异常:
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格式,也可以把pickle格式的对象反序列化回来。因此,在使用scikit-learn
、joblib
以及其他库的时候,它们的版本必须一致。由于错误信息不明确,我不确定从哪里开始调试。你有什么想法或提示吗?