导入imblearn.combine的SMOTEENN时出现get_max_squared_sum导入错误求助
解决SMOTEENN导入错误:cannot import name get_max_squared_sum
这个问题我之前帮几个开发者排查过,本质是scikit-learn(sklearn)和imbalanced-learn(imblearn)版本不兼容导致的——你当前Python2.7环境里的sklearn版本太旧,缺少get_max_squared_sum函数,而SMOTEENN在导入时会间接调用sklearn的sag模块,从而触发这个错误。下面是几个可行的解决方案:
方案1:给Python2.7安装兼容的sklearn版本
因为Python2.7已经停止维护,sklearn从0.23版本开始不再支持它,而get_max_squared_sum是在sklearn 0.21及以上版本才有的函数。你可以安装Python2.7支持的最后一个稳定sklearn版本:
pip install scikit-learn==0.22.2.post1
方案2:匹配imblearn与sklearn的版本
如果升级sklearn后还是报错,可能是imblearn版本太高,不兼容Python2.7的sklearn。可以安装适配Python2.7的imblearn版本:
pip install imbalanced-learn==0.4.3
这个版本的imblearn和sklearn 0.22.x完全兼容,能解决导入问题。
方案3:迁移到Python3环境(强烈推荐)
Python2.7已经完全停止维护,包括sklearn、imblearn在内的绝大多数主流库都不再更新支持它,后续还会遇到更多类似的版本兼容问题。建议你迁移到Python3.6及以上版本,然后直接安装最新版的依赖:
pip install scikit-learn imbalanced-learn
这样从根本上避免这类版本冲突问题。
补充说明:错误日志里的路径
/usr/lib64/python2.7/site-packages/sklearn/...明确显示你在用Python2.7环境,这是问题的核心诱因之一,优先考虑方案3能一劳永逸解决问题。
内容的提问来源于stack exchange,提问作者mradul
相关产品推荐
相关产品推荐

