Ubuntu 20(Python3.8)下autosklearn运行报错及适配版本求助
适配环境的固定兼容版本
在Ubuntu 20 + Python 3.8环境下,可同时解决两类报错的依赖版本组合为:
scikit-learn==0.23.2autosklearn==0.11.1
版本适配逻辑
No module named 'sklearn.metrics.classification'报错:该模块为scikit-learn 0.23.x及更早版本的公共导出模块,0.24版本后官方将其重构移入内部模块sklearn.metrics._classification。若用于加载的pickle模型是通过0.23及更早版本scikit-learn生成的,高版本scikit-learn会直接抛出模块缺失错误,固定使用0.23.2版本即可完全匹配。AttributeError: 'AutoMLClassifier' object has no attribute '_backend'报错:该报错绝大多数由autosklearn与scikit-learn版本不兼容导致的初始化中断触发,0.11.1版本的autosklearn原生适配scikit-learn 0.23.2,不会出现初始化阶段的属性缺失问题。
安装操作
先卸载当前环境的冲突版本,再执行固定版本安装:
pip uninstall scikit-learn autosklearn -y pip install scikit-learn==0.23.2 autosklearn==0.11.1
可选兼容方案(不降级scikit-learn版本)
若业务要求必须使用高版本scikit-learn,可在pickle加载前添加如下代码做模块映射,模拟旧版模块结构:
import sklearn.metrics from sklearn.metrics import _classification sklearn.metrics.classification = _classification
注意:该方案仅解决旧pickle文件的加载问题,autosklearn仍需匹配对应版本的scikit-learn要求,否则会触发其他兼容错误。
内容的提问来源于stack exchange,提问作者jht
相关产品推荐
相关产品推荐

