从 colab 加载模型时没有名为 'sklearn.svm._classes' 的模块
No module named 'sklearn.svm._classes' when loading model from colab
我已经在 google colab 上训练了一个模型,想将它加载到我的本地机器上。但是我得到 ModuleNotFoundError: No module named 'sklearn.svm._classes'
。在colab上加载模型,没问题。
协同实验室:
[1] import sys
sys.version
'3.6.9 (default, Nov 7 2019, 10:44:02) \n[GCC 8.3.0]'
[2] import joblib
import numpy as np
from sklearn import svm
clf = svm.SVC(gamma=0.001)
clf.fit(np.random.rand(9,8).astype(int), np.arange(9))
joblib.dump(clf, 'simple_classifier')
[3] joblib.load('simple_classifier')
我的本地机器:
>>> import sys
>>> sys.version
'3.6.9 (default, Nov 7 2019, 10:44:02) \n[GCC 8.3.0]'
>>> import numpy as np
>>> import joblib
>>> from sklearn import svm
>>> joblib.load('simple_classifier')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/.../ml-env/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 605, in load
obj = _unpickle(fobj, filename, mmap_mode)
File "/home/.../ml-env/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 529, in _unpickle
obj = unpickler.load()
File "/usr/lib/python3.6/pickle.py", line 1050, in load
dispatch[key[0]](self)
File "/usr/lib/python3.6/pickle.py", line 1338, in load_global
klass = self.find_class(module, name)
File "/usr/lib/python3.6/pickle.py", line 1388, in find_class
__import__(module, level=0)
ModuleNotFoundError: No module named 'sklearn.svm._classes'
通过 joblib
进行的序列化只有在安装包的版本完全在保存模型的程序和加载它的程序之间相同时才有效。
根据您看到的错误,我怀疑您在 Colab 和本地计算机上使用了不同版本的 scikit-learn。确保相关包的版本匹配,然后加载模型应该可以工作。
有关详细信息,请参阅 https://joblib.readthedocs.io/en/latest/persistence.html。
升级 sklearn 库使用:
pip install scikit-learn --upgrade
当使用特定版本的库构建模型并使用其他版本测试时发生。
我已经在 google colab 上训练了一个模型,想将它加载到我的本地机器上。但是我得到 ModuleNotFoundError: No module named 'sklearn.svm._classes'
。在colab上加载模型,没问题。
协同实验室:
[1] import sys
sys.version
'3.6.9 (default, Nov 7 2019, 10:44:02) \n[GCC 8.3.0]'
[2] import joblib
import numpy as np
from sklearn import svm
clf = svm.SVC(gamma=0.001)
clf.fit(np.random.rand(9,8).astype(int), np.arange(9))
joblib.dump(clf, 'simple_classifier')
[3] joblib.load('simple_classifier')
我的本地机器:
>>> import sys
>>> sys.version
'3.6.9 (default, Nov 7 2019, 10:44:02) \n[GCC 8.3.0]'
>>> import numpy as np
>>> import joblib
>>> from sklearn import svm
>>> joblib.load('simple_classifier')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/.../ml-env/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 605, in load
obj = _unpickle(fobj, filename, mmap_mode)
File "/home/.../ml-env/lib/python3.6/site-packages/joblib/numpy_pickle.py", line 529, in _unpickle
obj = unpickler.load()
File "/usr/lib/python3.6/pickle.py", line 1050, in load
dispatch[key[0]](self)
File "/usr/lib/python3.6/pickle.py", line 1338, in load_global
klass = self.find_class(module, name)
File "/usr/lib/python3.6/pickle.py", line 1388, in find_class
__import__(module, level=0)
ModuleNotFoundError: No module named 'sklearn.svm._classes'
通过 joblib
进行的序列化只有在安装包的版本完全在保存模型的程序和加载它的程序之间相同时才有效。
根据您看到的错误,我怀疑您在 Colab 和本地计算机上使用了不同版本的 scikit-learn。确保相关包的版本匹配,然后加载模型应该可以工作。
有关详细信息,请参阅 https://joblib.readthedocs.io/en/latest/persistence.html。
升级 sklearn 库使用:
pip install scikit-learn --upgrade
当使用特定版本的库构建模型并使用其他版本测试时发生。