Skip to content

Commit ec50f5b

Browse files
committed
✨ Add alternative with imblearn.fixes._mode
1 parent 9db0b20 commit ec50f5b

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

imblearn/over_sampling/_smote/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from sklearn.utils import check_array
2020
from sklearn.utils.sparsefuncs_fast import csr_mean_variance_axis0
2121
from sklearn.utils.sparsefuncs_fast import csc_mean_variance_axis0
22-
from sklearn.utils.fixes import _mode
2322

2423
from ..base import BaseOverSampler
2524
from ...metrics.pairwise import ValueDifferenceMetric
@@ -29,6 +28,7 @@
2928
from ...utils._docstring import _n_jobs_docstring
3029
from ...utils._docstring import _random_state_docstring
3130
from ...utils._validation import _deprecate_positional_args
31+
from ...utils.fixes import _mode
3232

3333

3434
class BaseSMOTE(BaseOverSampler):

imblearn/under_sampling/_prototype_selection/_edited_nearest_neighbours.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
import numpy as np
1212

1313
from sklearn.utils import _safe_indexing
14-
from sklearn.utils.fixes import _mode
1514

1615
from ..base import BaseCleaningSampler
1716
from ...utils import check_neighbors_object
1817
from ...utils import Substitution
1918
from ...utils._docstring import _n_jobs_docstring
2019
from ...utils._validation import _deprecate_positional_args
20+
from ...utils.fixes import _mode
21+
2122

2223
SEL_KIND = ("all", "mode")
2324

imblearn/under_sampling/_prototype_selection/_neighbourhood_cleaning_rule.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
import numpy as np
1010

1111
from sklearn.utils import _safe_indexing
12-
from sklearn.utils.fixes import _mode
1312

1413
from ..base import BaseCleaningSampler
1514
from ._edited_nearest_neighbours import EditedNearestNeighbours
1615
from ...utils import check_neighbors_object
1716
from ...utils import Substitution
1817
from ...utils._docstring import _n_jobs_docstring
1918
from ...utils._validation import _deprecate_positional_args
19+
from ...utils.fixes import _mode
20+
2021

2122
SEL_KIND = ("all", "mode")
2223

imblearn/utils/fixes.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""Compatibility fixes for older version of python, numpy and scipy
2+
If you add content to this file, please give the version of the package
3+
at which the fix is no longer needed.
4+
5+
Backdated from scikit-learn.
6+
"""
7+
# Authors: Emmanuelle Gouillart <emmanuelle.gouillart@normalesup.org>
8+
# Gael Varoquaux <gael.varoquaux@normalesup.org>
9+
# Fabian Pedregosa <fpedregosa@acm.org>
10+
# Lars Buitinck
11+
#
12+
# License: BSD 3 clause
13+
14+
from sklearn.externals._packaging.version import parse as parse_version
15+
import scipy
16+
import scipy.stats
17+
18+
19+
sp_version = parse_version(scipy.__version__)
20+
21+
22+
# TODO: Remove when SciPy 1.9 is the minimum supported version
23+
def _mode(a, axis=0):
24+
if sp_version >= parse_version("1.9.0"):
25+
return scipy.stats.mode(a, axis=axis, keepdims=True)
26+
return scipy.stats.mode(a, axis=axis)

0 commit comments

Comments
 (0)