导入SMOTE触发AttributeError:sklearn模块无DistanceMetric32属性
解决导入SMOTE时的AttributeError问题
错误原因
该错误由scikit-learn(sklearn)与imbalanced-learn(imblearn)版本不兼容引发:新版本scikit-learn已移除/重命名DistanceMetric32属性,但当前安装的imblearn版本仍在调用这个已不存在的属性。
修复步骤
方案一:升级imbalanced-learn到兼容版本
在终端执行命令:pip install --upgrade imbalanced-learn升级后imblearn会适配最新scikit-learn的API,解决属性缺失问题。
方案二:降级scikit-learn到与当前imblearn兼容的版本
若不想升级imblearn,可查看当前imblearn支持的scikit-learn版本范围,执行降级命令,示例:pip install scikit-learn==1.2.2(版本号需根据imblearn兼容要求调整,确保两者版本匹配)
方案三:创建干净虚拟环境重新安装依赖
规避现有环境的依赖冲突,以conda为例:conda create -n ml_env python=3.10 conda activate ml_env pip install scikit-learn imbalanced-learn pandas numpy
验证修复
安装完成后重新运行导入语句:
from imblearn.over_sampling import SMOTE
无报错则说明问题已解决。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

