Skip to content

Commit 06fe9ba

Browse files
MattEdingglemaitre
authored andcommitted
ENH add n_iter_ attribute in RENN (#651)
* add n_iter_ attr; fix spelling of my name * n_iter_ testing * fix renn iter test
1 parent d3a571c commit 06fe9ba

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

doc/whats_new/v0.6.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Enhancement
8181
:class:`imblearn.over_sampling.KMeansSMOTE`,
8282
:class:`imblearn.over_sampling.SMOTENC` is now vectorize with giving
8383
an additional speed-up when `X` in sparse.
84-
:pr:`596` by :user:`Matt Edding <MattEding>`.
84+
:pr:`596` by :user:`Matt Eding <MattEding>`.
8585

8686
Deprecation
8787
...........

imblearn/under_sampling/_prototype_selection/_edited_nearest_neighbours.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ class RepeatedEditedNearestNeighbours(BaseCleaningSampler):
202202
203203
.. versionadded:: 0.4
204204
205+
n_iter_ : int
206+
Number of iterations run.
207+
208+
.. versionadded:: 0.6
209+
205210
See Also
206211
--------
207212
CondensedNearestNeighbour : Undersample by condensing samples.
@@ -325,6 +330,7 @@ def _fit_resample(self, X, y):
325330
]
326331
break
327332

333+
self.n_iter_ = n_iter + 1
328334
X_resampled, y_resampled = X_, y_
329335

330336
return X_resampled, y_resampled

imblearn/under_sampling/_prototype_selection/tests/test_repeated_edited_nearest_neighbours.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ def test_renn_fit_resample():
182182
)
183183
assert_array_equal(X_resampled, X_gt)
184184
assert_array_equal(y_resampled, y_gt)
185+
assert 0 < renn.n_iter_ <= renn.max_iter
185186

186187

187188
def test_renn_fit_resample_mode_object():
@@ -266,6 +267,7 @@ def test_renn_fit_resample_mode_object():
266267
)
267268
assert_array_equal(X_resampled, X_gt)
268269
assert_array_equal(y_resampled, y_gt)
270+
assert 0 < renn.n_iter_ <= renn.max_iter
269271

270272

271273
def test_renn_fit_resample_mode():
@@ -351,10 +353,24 @@ def test_renn_fit_resample_mode():
351353
)
352354
assert_array_equal(X_resampled, X_gt)
353355
assert_array_equal(y_resampled, y_gt)
356+
assert 0 < renn.n_iter_ <= renn.max_iter
354357

355358

356359
def test_renn_not_good_object():
357360
nn = "rnd"
358361
renn = RepeatedEditedNearestNeighbours(n_neighbors=nn, kind_sel="mode")
359362
with pytest.raises(ValueError):
360363
renn.fit_resample(X, Y)
364+
365+
366+
@pytest.mark.parametrize(
367+
"max_iter, n_iter",
368+
[
369+
(2, 2),
370+
(5, 3),
371+
],
372+
)
373+
def test_renn_iter_attribute(max_iter, n_iter):
374+
renn = RepeatedEditedNearestNeighbours(max_iter=max_iter)
375+
renn.fit_resample(X, Y)
376+
assert renn.n_iter_ == n_iter

0 commit comments

Comments
 (0)