导入SMOTE报错:无法从sklearn.utils.metaestimators导入available_if求助
问题诊断与解决方案
错误根因
你安装的是最新版imbalanced-learn,该版本最低要求依赖scikit-learn >= 1.0。你当前环境的sklearn版本为0.24.1,缺少1.0版本才新增的sklearn.utils.metaestimators.available_if接口,因此触发导入报错。
解决方案
方案1:安装适配旧版sklearn的imbalanced-learn(推荐,操作成本最低)
imbalanced-learn 0.8.1版本完美适配scikit-learn 0.24,在Jupyter中执行以下命令即可:
!pip install imbalanced-learn==0.8.1
安装完成后重启Jupyter内核,重新执行from imblearn.over_sampling import SMOTE即可正常导入。
方案2:升级scikit-learn到兼容版本
如果需要使用新版imbalanced-learn的新增功能,按以下步骤操作解决升级OSError:
- 关闭所有正在运行的Python进程、Jupyter服务、Anaconda相关程序,避免文件被占用导致升级失败
- 以管理员权限打开Anaconda Prompt,执行升级命令:
pip install -U scikit-learn>=1.0 - 升级完成后确认imbalanced-learn为最新版本,重启Jupyter内核后即可正常使用。
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

