sklearn 1.0.2导入RFECV报错无法导入_ClassNamePrefixFeaturesOutMixin
问题说明
使用scikit-learn 1.0.2版本时,尝试从sklearn.feature_selection模块导入RFECV持续触发导入错误,报错信息如下:
ImportError: cannot import name '_ClassNamePrefixFeaturesOutMixin' from 'sklearn.base' (C:\Users\sedam\anaconda34\lib\site-packages\sklearn\base.py)
报错原因
_ClassNamePrefixFeaturesOutMixin是scikit-learn 1.1.0版本才在sklearn.base中新增的内部工具类,1.0.2版本的sklearn.base模块不存在这个类。触发这个报错的核心原因是当前环境内scikit-learn相关组件版本不匹配:要么是环境内残留了高版本sklearn的组件文件,要么是其他依赖scikit-learn的第三方包版本适配高版本sklearn,但主包sklearn还停留在1.0.2版本,导入时找不到对应类就会抛出错误。
解决方法
- 优先选择升级scikit-learn版本:激活你用的anaconda对应环境,直接执行升级命令即可,推荐安装1.1以上的稳定版
如果习惯用conda管理包,就执行:pip install -U scikit-learn==1.2.2
升级完成后先执行conda install scikit-learn=1.2.2import sklearn; print(sklearn.__version__)确认版本号符合要求,再重新导入RFECV测试即可。 - 如果必须固定使用1.0.2版本的scikit-learn,就先彻底清理环境内的sklearn相关残留:先执行卸载命令把所有关联包卸干净
卸载完成后手动进入报错路径里的pip uninstall -y scikit-learn scikit-learn-intelex imbalanced-learnC:\Users\sedam\anaconda34\lib\site-packages目录,把所有名称带sklearn的文件夹全部删除,再重新执行安装命令装1.0.2版本:pip install scikit-learn==1.0.2 - 额外提醒:同一个虚拟环境里不要混着用pip和conda安装scikit-learn,非常容易出现文件覆盖不全、版本残留的问题,后续装相关依赖尽量统一用同一个包管理工具。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

