没有名为 'sklearn.neighbors._base' 的模块
No module named 'sklearn.neighbors._base'
我最近使用
在 jupyter 中安装了 imblearn 包
!pip show imbalanced-learn
但是我无法导入这个包。
from tensorflow.keras import backend
from imblearn.over_sampling import SMOTE
我收到以下错误
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-20-f19c5a0e54af> in <module>
1 # from sklearn.utils import resample
2 from tensorflow.keras import backend
----> 3 from imblearn.over_sampling import SMOTE
4
5
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/__init__.py in <module>
32 Module which allowing to create pipeline with scikit-learn estimators.
33 """
---> 34 from . import combine
35 from . import ensemble
36 from . import exceptions
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/combine/__init__.py in <module>
3 """
4
----> 5 from ._smote_enn import SMOTEENN
6 from ._smote_tomek import SMOTETomek
7
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/combine/_smote_enn.py in <module>
8 from sklearn.utils import check_X_y
9
---> 10 from ..base import BaseSampler
11 from ..over_sampling import SMOTE
12 from ..over_sampling.base import BaseOverSampler
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/base.py in <module>
14 from sklearn.utils.multiclass import check_classification_targets
15
---> 16 from .utils import check_sampling_strategy, check_target_type
17
18
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/utils/__init__.py in <module>
5 from ._docstring import Substitution
6
----> 7 from ._validation import check_neighbors_object
8 from ._validation import check_target_type
9 from ._validation import check_sampling_strategy
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/utils/_validation.py in <module>
11
12 from sklearn.base import clone
---> 13 from sklearn.neighbors._base import KNeighborsMixin
14 from sklearn.neighbors import NearestNeighbors
15 from sklearn.utils.multiclass import type_of_target
ModuleNotFoundError: No module named 'sklearn.neighbors._base'
环境中的其他包
numpy==1.16.2
pandas==0.24.2
paramiko==2.1.1
matplotlib==2.2.4
scikit-learn==0.22.1
Keras==2.2.4
tensorflow==1.12.0
tensorboard==1.12.0
tensorflow-hub==0.4.0
xlrd==1.2.0
flask==1.0.2
wtforms==2.2.1
bs4==0.0.1
gensim==3.8.1
spacy==2.2.3
nltk==3.4.5
wordcloud==1.6.0
pymongo==3.10.1
imbalanced-learn==0.6.1
我检查了 sklearn 包,它包含 base 模块,而不是 _base。但是修改它可能不是正确的解决方案。解决此问题的任何其他解决方案。
之前的 sklearn.neighbors.base
已重命名为 sklearn.neighbors._base
in version 0.22.1。
您的 scikit-learn 版本可能比这更早。
安装 latest release 解决问题:
pip install -U scikit-learn
或
pip install scikit-learn==0.22.1
如果您想坚持使用最新版本的 scikit-learn,请将以下代码添加到您的脚本中,或者在安装 imblearn 之前在您的环境中执行以下代码
import sklearn.neighbors._base
sys.modules['sklearn.neighbors.base'] = sklearn.neighbors._base
这必须在
之后
pip install sklearn
或者在笔记本环境中:
!pip install sklearn
此问题源于以下事实:某些模块在较新的 scikit-learn 版本中使用下划线命名
如果它在特定的环境中,您必须将 _base
文件或 base
文件从包文件复制到环境中。
我在 tensorflow 环境中遇到了同样的问题。我刚刚将 _base
和 base
文件复制到我的 tensorflow 环境并开始工作。
我在尝试从 imblearn.over_sampling
导入 SMOTE 时遇到了类似的问题,我的 scikit-learn 版本是最新的 (0.24.1)。对我有用的是:
首先,我使用
将我的 scikit learn 版本降级到 0.22.1
pip install scikit-learn==0.22.1
接下来,我使用以下方法更新了不平衡学习包:
pip install -U imbalanced-learn
卸载了 scikit-learn-0.22.1,安装了更新版本 (scikit-learn-0.24.1),并更新了不平衡学习包。此后一切正常。
我最近使用
在 jupyter 中安装了 imblearn 包!pip show imbalanced-learn
但是我无法导入这个包。
from tensorflow.keras import backend
from imblearn.over_sampling import SMOTE
我收到以下错误
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-20-f19c5a0e54af> in <module>
1 # from sklearn.utils import resample
2 from tensorflow.keras import backend
----> 3 from imblearn.over_sampling import SMOTE
4
5
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/__init__.py in <module>
32 Module which allowing to create pipeline with scikit-learn estimators.
33 """
---> 34 from . import combine
35 from . import ensemble
36 from . import exceptions
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/combine/__init__.py in <module>
3 """
4
----> 5 from ._smote_enn import SMOTEENN
6 from ._smote_tomek import SMOTETomek
7
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/combine/_smote_enn.py in <module>
8 from sklearn.utils import check_X_y
9
---> 10 from ..base import BaseSampler
11 from ..over_sampling import SMOTE
12 from ..over_sampling.base import BaseOverSampler
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/base.py in <module>
14 from sklearn.utils.multiclass import check_classification_targets
15
---> 16 from .utils import check_sampling_strategy, check_target_type
17
18
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/utils/__init__.py in <module>
5 from ._docstring import Substitution
6
----> 7 from ._validation import check_neighbors_object
8 from ._validation import check_target_type
9 from ._validation import check_sampling_strategy
~/.virtualenvs/p3/lib/python3.6/site-packages/imblearn/utils/_validation.py in <module>
11
12 from sklearn.base import clone
---> 13 from sklearn.neighbors._base import KNeighborsMixin
14 from sklearn.neighbors import NearestNeighbors
15 from sklearn.utils.multiclass import type_of_target
ModuleNotFoundError: No module named 'sklearn.neighbors._base'
环境中的其他包
numpy==1.16.2
pandas==0.24.2
paramiko==2.1.1
matplotlib==2.2.4
scikit-learn==0.22.1
Keras==2.2.4
tensorflow==1.12.0
tensorboard==1.12.0
tensorflow-hub==0.4.0
xlrd==1.2.0
flask==1.0.2
wtforms==2.2.1
bs4==0.0.1
gensim==3.8.1
spacy==2.2.3
nltk==3.4.5
wordcloud==1.6.0
pymongo==3.10.1
imbalanced-learn==0.6.1
我检查了 sklearn 包,它包含 base 模块,而不是 _base。但是修改它可能不是正确的解决方案。解决此问题的任何其他解决方案。
之前的 sklearn.neighbors.base
已重命名为 sklearn.neighbors._base
in version 0.22.1。
您的 scikit-learn 版本可能比这更早。
安装 latest release 解决问题:
pip install -U scikit-learn
或
pip install scikit-learn==0.22.1
如果您想坚持使用最新版本的 scikit-learn,请将以下代码添加到您的脚本中,或者在安装 imblearn 之前在您的环境中执行以下代码
import sklearn.neighbors._base
sys.modules['sklearn.neighbors.base'] = sklearn.neighbors._base
这必须在
之后pip install sklearn
或者在笔记本环境中:
!pip install sklearn
此问题源于以下事实:某些模块在较新的 scikit-learn 版本中使用下划线命名
如果它在特定的环境中,您必须将 _base
文件或 base
文件从包文件复制到环境中。
我在 tensorflow 环境中遇到了同样的问题。我刚刚将 _base
和 base
文件复制到我的 tensorflow 环境并开始工作。
我在尝试从 imblearn.over_sampling
导入 SMOTE 时遇到了类似的问题,我的 scikit-learn 版本是最新的 (0.24.1)。对我有用的是:
首先,我使用
将我的 scikit learn 版本降级到 0.22.1 pip install scikit-learn==0.22.1
接下来,我使用以下方法更新了不平衡学习包:
pip install -U imbalanced-learn
卸载了 scikit-learn-0.22.1,安装了更新版本 (scikit-learn-0.24.1),并更新了不平衡学习包。此后一切正常。