摘要
处理文档时抛出此错误No module named 'sklearn.feature_selection.rfe'.在HeadingLevelPrediction.py中加载levels_model.pkl导致了这个错误
No module named 'sklearn.feature_selection.rfe'.
cyvaqqii1#
问题是,这个模型是用旧版本的sklearn构建的,该版本具有此模块。根据我在处理导入时收到的警告,它报告用于pickle模型的sklearn版本为0.21.3。我在当地使用裸机安装说明进行安装,遗漏了sklearn作为依赖项。pip install scikit-learn==0.21.3在我的MacOS Big Sur机器上为Python 3.7.9安装了一个二进制文件,但不适用于3.8.2或3.9.4(未使用homebrew)。
sklearn
pip install scikit-learn==0.21.3
这是我在安装了sklearn的最新版本后的dist/assets/HeadingLevelPrediction.py中所做的可怕的事情:
dist/assets/HeadingLevelPrediction.py
import sklearn.feature_selection._rfe sys.modules["sklearn.feature_selection.rfe"] = sklearn.feature_selection._rfe import sklearn.tree import sklearn.tree._tree sklearn.tree.tree = sklearn.tree._tree sys.modules["sklearn.tree.tree"] = sklearn.tree._tree sklearn.tree.tree.DecisionTreeClassifier = sklearn.tree.DecisionTreeClassifier import sklearn.metrics._scorer import sklearn.metrics._classification sys.modules["sklearn.metrics.scorer"] = sklearn.metrics._scorer sys.modules["sklearn.metrics.classification"] = sklearn.metrics._classification
在那一点,模型加载了,但我得到了一个警告,说它是用以前的版本pickle的,我不知道它是否仍然有效。对我来说,最好的做法只是使用Python 3.7。
brtdzjyr2#
感谢slbayer的回答!这救了我的一天!
2条答案
按热度按时间cyvaqqii1#
问题是,这个模型是用旧版本的
sklearn
构建的,该版本具有此模块。根据我在处理导入时收到的警告,它报告用于pickle模型的sklearn
版本为0.21.3。我在当地使用裸机安装说明进行安装,遗漏了sklearn
作为依赖项。pip install scikit-learn==0.21.3
在我的MacOS Big Sur机器上为Python 3.7.9安装了一个二进制文件,但不适用于3.8.2或3.9.4(未使用homebrew)。这是我在安装了
sklearn
的最新版本后的dist/assets/HeadingLevelPrediction.py
中所做的可怕的事情:在那一点,模型加载了,但我得到了一个警告,说它是用以前的版本pickle的,我不知道它是否仍然有效。对我来说,最好的做法只是使用Python 3.7。
brtdzjyr2#
感谢slbayer的回答!这救了我的一天!