8000 Improve test_iforest_average_path_length() · scikit-learn/scikit-learn@ed3c68d · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ed3c68d

Browse files
committed
Improve test_iforest_average_path_length()
We shold compare the implementation with the exact equation instead of the approximation.
1 parent a203b9e commit ed3c68d

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

sklearn/ensemble/tests/test_iforest.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,19 +235,22 @@ def test_iforest_subsampled_features():
235235

236236

237237
def test_iforest_average_path_length():
238+
def harmonic_humber(n):
239+
return np.sum(1.0/np.arange(1, n+1))
238240
# It tests non-regression for #8549 which used the wrong formula
239241
# for average path length, strictly for the integer case
240242
# Updated to check average path length when input is <= 2 (issue #11839)
241-
result_one = 2.0 * (np.log(4.0) + np.euler_gamma) - 2.0 * 4.0 / 5.0
242-
result_two = 2.0 * (np.log(998.0) + np.euler_gamma) - 2.0 * 998.0 / 999.0
243+
result_one = 2.0 * harmonic_humber(4.0) - 2.0 * 4.0 / 5.0
244+
result_two = 2.0 * harmonic_humber(998.0) - 2.0 * 998.0 / 999.0
243245
assert_allclose(_average_path_length([0]), [0.0])
244246
assert_allclose(_average_path_length([1]), [0.0])
245247
assert_allclose(_average_path_length([2]), [1.0])
246-
assert_allclose(_average_path_length([5]), [result_one])
247-
assert_allclose(_average_path_length([999]), [result_two])
248+
assert_allclose(_average_path_length([5]), [result_one], rtol=0.1)
249+
assert_allclose(_average_path_length([999]), [result_two], rtol=1e-4)
248250
assert_allclose(
249251
_average_path_length(np.array([1, 2, 5, 999])),
250252
[0.0, 1.0, result_one, result_two],
253+
rtol=0.1
251254
)
252255
# _average_path_length is increasing
253256
avg_path_length = _average_path_length(np.arange(5))

0 commit comments

Comments
 (0)
0