问题描述
我使用 Scikit-learn 的 imblearn 和 RandomForestClassifer 构建和训练了 imblearn.pipeline
Pipeline
。
使用 joblib.dump('model.joblib')
保存模型。
但是,当我尝试加载模型时,它会引发错误
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-26-d3ee277020d2> in <module>
----> 1 model = joblib.load('model.joblib')
~/SageMaker/custom-miniconda/miniconda/envs/datascience/lib/python3.7/site-packages/joblib/numpy_pickle.py in load(filename,mmap_mode)
583 return load_compatibility(fobj)
584
--> 585 obj = _unpickle(fobj,filename,mmap_mode)
586 return obj
~/SageMaker/custom-miniconda/miniconda/envs/datascience/lib/python3.7/site-packages/joblib/numpy_pickle.py in _unpickle(fobj,mmap_mode)
502 obj = None
503 try:
--> 504 obj = unpickler.load()
505 if unpickler.compat_mode:
506 warnings.warn("The file '%s' has been generated with a "
~/SageMaker/custom-miniconda/miniconda/envs/datascience/lib/python3.7/pickle.py in load(self)
1086 raise EOFError
1087 assert isinstance(key,bytes_types)
-> 1088 dispatch[key[0]](self)
1089 except _Stop as stopinst:
1090 return stopinst.value
~/SageMaker/custom-miniconda/miniconda/envs/datascience/lib/python3.7/pickle.py in load_global(self)
1374 module = self.readline()[:-1].decode("utf-8")
1375 name = self.readline()[:-1].decode("utf-8")
-> 1376 klass = self.find_class(module,name)
1377 self.append(klass)
1378 dispatch[GLOBAL[0]] = load_global
~/SageMaker/custom-miniconda/miniconda/envs/datascience/lib/python3.7/pickle.py in find_class(self,module,name)
1424 elif module in _compat_pickle.IMPORT_MAPPING:
1425 module = _compat_pickle.IMPORT_MAPPING[module]
-> 1426 __import__(module,level=0)
1427 if self.proto >= 4:
1428 return _getattribute(sys.modules[module],name)[0]
ModuleNotFoundError: No module named 'imblearn.over_sampling._smote.base'; 'imblearn.over_sampling._smote' is not a package
我确实在 conda 环境中安装了 imblearn。不知道为什么没有找到 imblearn。任何提示都会有所帮助。
解决方法
使用
python-m pip install package name
在系统上全局安装它,也许它可以帮助