2

Running from imblearn.over_sampling import SMOTE will raise following error.

---------------------------------------------------------------------------
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'
Leo
  • 93
  • 1
  • 8

1 Answers1

2

This is probably a case where upgrading scikit-learn and imbalanced-learn will resolve the problem.

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

Not all versions of scikit-learn and imbalanced-learn are compatible with one another. Version 0.10.0 should be compatible with scikit-learn>=1.0.0 (e.g. discussion here).

Alexander L. Hayes
  • 3,892
  • 4
  • 13
  • 34