簡體   English   中英

導入 SMOTE 引發 AttributeError:模塊“sklearn.metrics._dist_metrics”沒有屬性“DistanceMetric32”

[英]Importing SMOTE raise AttributeError: module 'sklearn.metrics._dist_metrics' has no attribute 'DistanceMetric32'

from imblearn.over_sampling import SMOTE運行將引發以下錯誤。

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
d:\A\OneDrive - UBC\ENGR\518 Machine Learning\Project\codes\model_training_laptop - Copy.ipynb Cell 2 in <cell line: 1>()
----> 1 from imblearn.over_sampling import SMOTE

File e:\Anaconda\lib\site-packages\imblearn\__init__.py:52, in <module>
     48     sys.stderr.write("Partial import of imblearn during the build process.\n")
     49     # We are not importing the rest of scikit-learn during the build
     50     # process, as it may not be compiled yet
     51 else:
---> 52     from . import combine
     53     from . import ensemble
     54     from . import exceptions

File e:\Anaconda\lib\site-packages\imblearn\combine\__init__.py:5, in <module>
      1 """The :mod:`imblearn.combine` provides methods which combine
      2 over-sampling and under-sampling.
      3 """
----> 5 from ._smote_enn import SMOTEENN
      6 from ._smote_tomek import SMOTETomek
      8 __all__ = ["SMOTEENN", "SMOTETomek"]

File e:\Anaconda\lib\site-packages\imblearn\combine\_smote_enn.py:10, in <module>
      7 from sklearn.base import clone
      8 from sklearn.utils import check_X_y
---> 10 from ..base import BaseSampler
     11 from ..over_sampling import SMOTE
     12 from ..over_sampling.base import BaseOverSampler

File e:\Anaconda\lib\site-packages\imblearn\base.py:15, in <module>
     12 from sklearn.preprocessing import label_binarize
     13 from sklearn.utils.multiclass import check_classification_targets
---> 15 from .utils import check_sampling_strategy, check_target_type
     16 from .utils._validation import ArraysTransformer
     17 from .utils._validation import _deprecate_positional_args

File e:\Anaconda\lib\site-packages\imblearn\utils\__init__.py:7, in <module>
      1 """
      2 The :mod:`imblearn.utils` module includes various utilities.
      3 """
      5 from ._docstring import Substitution
----> 7 from ._validation import check_neighbors_object
      8 from ._validation import check_target_type
      9 from ._validation import check_sampling_strategy

File e:\Anaconda\lib\site-packages\imblearn\utils\_validation.py:15, in <module>
     12 import numpy as np
     14 from sklearn.base import clone
---> 15 from sklearn.neighbors._base import KNeighborsMixin
     16 from sklearn.neighbors import NearestNeighbors
     17 from sklearn.utils import column_or_1d

File e:\Anaconda\lib\site-packages\sklearn\neighbors\__init__.py:6, in <module>
      1 """
      2 The :mod:`sklearn.neighbors` module implements the k-nearest neighbors
      3 algorithm.
      4 """
----> 6 from ._ball_tree import BallTree
      7 from ._kd_tree import KDTree
      8 from ._distance_metric import DistanceMetric

File sklearn\neighbors\_ball_tree.pyx:1, in init sklearn.neighbors._ball_tree()

AttributeError: module 'sklearn.metrics._dist_metrics' has no attribute 'DistanceMetric32'

這可能是升級scikit-learn和 imbalanced- imbalanced-learn將解決問題的情況。

pip install --upgrade scikit-learn
pip install --upgrade imbalanced-learn

並非所有版本的scikit-learnimbalanced-learn都相互兼容。 版本0.10.0應該與scikit-learn>=1.0.0兼容(例如這里的討論)。

改為 scikit-learn==0.24.2 解決了這個問題。 謝謝!

暫無
暫無

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

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