簡體   English   中英

沒有名為“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。 但是修改它可能不是正確的解決方案。 解決此問題的任何其他解決方案。

以前的sklearn.neighbors.base已在sklearn.neighbors._base 版本中重命名為sklearn.neighbors._base
您可能有一個比這更舊的 scikit-learn 版本。 安裝最新版本解決了這個問題:

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 版本中用下划線命名

我在嘗試從imblearn.over_sampling導入imblearn.over_sampling遇到了類似的問題,我的 scikit-learn 版本是最新的 (0.24.1)。 對我有用的是:

首先,我使用

 pip install scikit-learn==0.22.1

接下來,我使用以下方法更新了不平衡學習包:

pip install -U imbalanced-learn

卸載了 scikit-learn-0.22.1,安裝了更新版本 (scikit-learn-0.24.1),並更新了不平衡學習包。 此后一切正常。

如果它在特定的 env 中,則必須將_base文件或base文件從包文件復制到 env。

我在我的 tensorflow 環境中遇到了同樣的問題。 我只是將_basebase文件復制到我的 tensorflow 環境中並工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM