导入代码就报错:
import pandas as pd
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split

报错如下:
Traceback (most recent call last):
File “”, line 1, in
File “C:\Users\Administrator.conda\envs\py36\lib\site-packages\ imblearn _init_.py”, line 37, in
from . import combine
File “C:\Users\Administrator.conda\envs\py36\lib\site-packages\imblearn\combine_init_.py”, line 5, in
from .smote_enn import SMOTEENN
File “C:\Users\Administrator.conda\envs\py36\lib\site-packages\imblearn\combine_smote_enn.py”, line 10, in
from …base import BaseSampler
File “C:\Users\Administrator.conda\envs\py36\lib\site-packages\imblearn\base.py”, line 15, in
from .utils import check_sampling_strategy, check_target_type
File "C:\Users\Administrator.conda\envs\py36\lib\site-packages\imblearn\utils_init
.py", line 7, in
from ._validation import check_neighbors_object
File “C:\Users\Administrator.conda\envs\py36\lib\site-packages\imblearn\utils_validation.py”, line 15, in
from sklearn.neighbors._baseimport KNeighborsMixin
ModuleNotFoundError: No module named ‘sklearn.neighbors._base’

由上面标记黄色字体,可以看出,错误是从imblearn模块开始, No module named 'sklearn.neighbors._base’说明sklearn模块版本过低。

解决办法一:
升级一下sklearn,使用pip install --upgrade scikit-learn或conda update scikit-learn。
要注意的是: conda update scikit-learn会一同更新 scikit-learn的依赖库。

解决办法二:
因为错误是从imblearn发出,说明其需要调用新版本scikit-learn的新函数。使用conda list 一看在这里插入图片描述
果然最新版0.7.0
所以可以降低 imblearn的版本,先卸载 imblearn,使用pip uninstall imbalanced-learn,再用:pip install imbalanced-learn==0.2.0安装指定的0.2.0版本,如果不知道有哪些版本可以故意将版本号写大一点
pip install imbalanced-learn= =99.99.8,这样pip就会列举所有的可安装版本
在这里插入图片描述
这里我想安装0.1.0版本,但是没有这个版本,pip就会列举出来可用的版本。

事情起因:
因为数据不平衡需要用到 imblearn库
本想找一个适合环境的版本,因为环境比较老了,没想到吧
在这里插入图片描述
anaconda search -t conda imblean-learn竟然找不到这玩意
在这里插入图片描述
anaconda search -t conda imblean竟然也找不到这玩意

就直接:pip install imblean-learn了
但是,但是,但是
在这里插入图片描述
pip为了装最新版本的imblean-learn把我的scikit-learn的0.18.2版本给卸载了,装成最版0.23.2了
在这里插入图片描述
结果,代码由出现了各种因为scikit-learn版本的报错,
于是。。。
我想到了把scikit-learn卸载,再重新安装,
在这里插入图片描述
虽然一片红色,但显示安装成功,本以为最终成功了,没想到,遇到前面的导入报错,最后降版本解决。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐