Parsr 没有名为'sklearn.feature_selection.rfe'的模块用于HeadingLevelPrediction,

drkbr07n  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(40)

摘要

处理文档时抛出此错误
No module named 'sklearn.feature_selection.rfe'.
在HeadingLevelPrediction.py中加载levels_model.pkl导致了这个错误

cyvaqqii

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中所做的可怕的事情:

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。

brtdzjyr

brtdzjyr2#

感谢slbayer的回答!这救了我的一天!

相关问题