Skip to content

Commit 56b624c

Browse files
authored
MAINT: Deprecate BalanceCascade sampler (#472)
1 parent 200974e commit 56b624c

File tree

4 files changed

+13
-0
lines changed

4 files changed

+13
-0
lines changed

doc/whats_new/v0.0.4.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,6 @@ Deprecation
144144
:class:`imblearn.ensemble.EasyEnsembleClassifier` which follow the exact
145145
algorithm described in the literature.
146146
:issue:`455` by :user:`Guillaume Lemaitre <glemaitre>`.
147+
148+
- Deprecate :class:`imblearn.ensemble.BalanceCascade`.
149+
:issue:`472` by :user:`Guillaume Lemaitre <glemaitre>`.

imblearn/ensemble/_balance_cascade.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from sklearn.neighbors import KNeighborsClassifier
1313
from sklearn.utils import check_random_state, safe_indexing
1414
from sklearn.model_selection import cross_val_predict
15+
from sklearn.utils.deprecation import deprecated
1516

1617
from .base import BaseEnsembleSampler
1718
from ..under_sampling.base import BaseUnderSampler
@@ -23,6 +24,7 @@
2324
@Substitution(
2425
sampling_strategy=BaseUnderSampler._sampling_strategy_docstring,
2526
random_state=_random_state_docstring)
27+
@deprecated('BalanceCascade is deprecated in 0.4 and will be removed in 0.6.')
2628
class BalanceCascade(BaseEnsembleSampler):
2729
"""Create an ensemble of balanced sets by iteratively under-sampling the
2830
imbalanced dataset using an estimator.

imblearn/ensemble/tests/test_balance_cascade.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import numpy as np
77

8+
import pytest
89
from pytest import raises
910

1011
from sklearn.utils.testing import assert_array_equal
@@ -30,6 +31,7 @@
3031
Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0])
3132

3233

34+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
3335
def test_fit_resample_auto():
3436
sampling_strategy = 'auto'
3537
bc = BalanceCascade(
@@ -68,6 +70,7 @@ def test_fit_resample_auto():
6870
assert_array_equal(idx_under, idx_gt)
6971

7072

73+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
7174
def test_fit_resample_half():
7275
sampling_strategy = {0: 8, 1: 10}
7376
bc = BalanceCascade(
@@ -89,6 +92,7 @@ def test_fit_resample_half():
8992
assert_array_equal(y_resampled, y_gt)
9093

9194

95+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
9296
def test_fit_resample_auto_early_stop():
9397
sampling_strategy = 'auto'
9498
estimator = LinearSVC(random_state=RND_SEED)
@@ -114,6 +118,7 @@ def test_fit_resample_auto_early_stop():
114118
assert_array_equal(y_resampled, y_gt)
115119

116120

121+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
117122
def test_give_classifier_obj():
118123
sampling_strategy = 'auto'
119124
estimator = RandomForestClassifier(n_estimators=10, random_state=RND_SEED)
@@ -138,6 +143,7 @@ def test_give_classifier_obj():
138143
assert_array_equal(y_resampled, y_gt)
139144

140145

146+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
141147
def test_give_classifier_wrong_obj():
142148
sampling_strategy = 'auto'
143149
classifier = 2

imblearn/tests/test_common.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def test_all_estimator_no_base_class(name, Estimator):
2323
@pytest.mark.filterwarnings("ignore:'ratio' is deprecated from 0.4")
2424
@pytest.mark.filterwarnings("ignore:'sampling_strategy' as a dict for")
2525
@pytest.mark.filterwarnings("ignore:Class EasyEnsemble is deprecated")
26+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
2627
@pytest.mark.filterwarnings('ignore:"kind" is deprecated in 0.4 and will be')
2728
@pytest.mark.filterwarnings('ignore:"svm_estimator" is deprecated in 0.4 and')
2829
@pytest.mark.filterwarnings('ignore:"out_step" is deprecated in 0.4 and')
@@ -55,6 +56,7 @@ def _generate_checks_per_estimator(check_generator, estimators):
5556
@pytest.mark.filterwarnings("ignore:'ratio' is deprecated from 0.4")
5657
@pytest.mark.filterwarnings("ignore:'sampling_strategy' as a dict for")
5758
@pytest.mark.filterwarnings("ignore:Class EasyEnsemble is deprecated")
59+
@pytest.mark.filterwarnings('ignore:Class BalanceCascade is deprecated')
5860
@pytest.mark.filterwarnings('ignore:"kind" is deprecated in 0.4 and will be')
5961
@pytest.mark.filterwarnings('ignore:"svm_estimator" is deprecated in 0.4 and')
6062
@pytest.mark.filterwarnings('ignore:"out_step" is deprecated in 0.4 and')

0 commit comments

Comments
 (0)