8000 Make tests runnable with pytest without error. · scikit-learn/scikit-learn@f9e6fdb · GitHub
[go: up one dir, main page]

Skip to content

Commit f9e6fdb

Browse files
committed
Make tests runnable with pytest without error.
Errors were due to pytest quirks with (deprecated) yield support.
1 parent 1b0ec1b commit f9e6fdb

File tree

4 files changed

+54
-45
lines changed

4 files changed

+54
-45
lines changed

sklearn/gaussian_process/tests/test_kernels.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ def check_hyperparameters_equal(kernel1, kernel2):
194194

195195
def test_kernel_clone():
196196
# Test that sklearn's clone works correctly on kernels.
197-
bounds = (1e-5, 1e5)
198197
for kernel in kernels:
199198
kernel_cloned = clone(kernel)
200199

@@ -209,12 +208,17 @@ def test_kernel_clone():
209208
# Check that all hyperparameters are equal.
210209
yield check_hyperparameters_equal, kernel, kernel_cloned
211210

212-
# This test is to verify that using set_params does not
213-
# break clone on kernels.
214-
# This used to break because in kernels such as the RBF, non-trivial
215-
# logic that modified the length scale used to be in the constructor
216-
# See https://github.com/scikit-learn/scikit-learn/issues/6961
217-
# for more details.
211+
212+
def test_kernel_clone_after_set_params():
213+
# This test is to verify that using set_params does not
214+
# break clone on kernels.
215+
# This used to break because in kernels such as the RBF, non-trivial
216+
# logic that modified the length scale used to be in the constructor
217+
# See https://github.com/scikit-learn/scikit-learn/issues/6961
218+
# for more details.
219+
bounds = (1e-5, 1e5)
220+
for kernel in kernels:
221+
kernel_cloned = clone(kernel)
218222
params = kernel.get_params()
219223
# RationalQuadratic kernel is isotropic.
220224
isotropic_kernels = (ExpSineSquared, RationalQuadratic)

sklearn/neighbors/tests/test_ball_tree.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ def compute_kernel_slow(Y, X, kernel, h):
156156
raise ValueError('kernel not recognized')
157157

158158

159+
def check_results(kernel, h, atol, rtol, breadth_first, bt, Y, dens_true):
160+
dens = bt.kernel_density(Y, h, atol=atol, rtol=rtol,
161+
kernel=kernel,
162+
breadth_first=breadth_first)
163+
assert_allclose(dens, dens_true,
164+
atol=atol, rtol=max(rtol, 1e-7))
165+
166+
159167
def test_ball_tree_kde(n_samples=100, n_features=3):
160168
np.random.seed(0)
161169
X = np.random.random((n_samples, n_features))
@@ -167,18 +175,11 @@ def test_ball_tree_kde(n_samples=100, n_features=3):
167175
for h in [0.01, 0.1, 1]:
168176
dens_true = compute_kernel_slow(Y, X, kernel, h)
169177

170-
def check_results(kernel, h, atol, rtol, breadth_first):
171-
dens = bt.kernel_density(Y, h, atol=atol, rtol=rtol,
172-
kernel=kernel,
173-
breadth_first=breadth_first)
174-
assert_allclose(dens, dens_true,
175-
atol=atol, rtol=max(rtol, 1e-7))
176-
177178
for rtol in [0, 1E-5]:
178179
for atol in [1E-6, 1E-2]:
179180
for breadth_first in (True, False):
180181
yield (check_results, kernel, h, atol, rtol,
181-
breadth_first)
182+
breadth_first, bt, Y, dens_true)
182183

183184

184185
def test_gaussian_kde(n_samples=1000):

sklearn/neighbors/tests/test_kd_tree.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,29 @@ def brute_force_neighbors(X, Y, k, metric, **kwargs):
2424
return dist, ind
2525

2626

27+
def check_neighbors(dualtree, breadth_first, k, metric, X, Y, kwargs):
28+
kdt = KDTree(X, leaf_size=1, metric=metric, **kwargs)
29+
dist1, ind1 = kdt.query(Y, k, dualtree=dualtree,
30+
breadth_first=breadth_first)
31+
dist2, ind2 = brute_force_neighbors(X, Y, k, metric, **kwargs)
32+
33+
# don't check indices here: if there are any duplicate distances,
34+
# the indices may not match. Distances should not have this problem.
35+
assert_array_almost_equal(dist1, dist2)
36+
37+
2738
def test_kd_tree_query():
2839
np.random.seed(0)
2940
X = np.random.random((40, DIMENSION))
3041
Y = np.random.random((10, DIMENSION))
3142

32-
def check_neighbors(dualtree, breadth_first, k, metric, kwargs):
33-
kdt = KDTree(X, leaf_size=1, metric=metric, **kwargs)
34-
dist1, ind1 = kdt.query(Y, k, dualtree=dualtree,
35-
breadth_first=breadth_first)
36-
dist2, ind2 = brute_force_neighbors(X, Y, k, metric, **kwargs)
37-
38-
# don't check indices here: if there are any duplicate distances,
39-
# the indices may not match. Distances should not have this problem.
40-
assert_array_almost_equal(dist1, dist2)
41-
4243
for (metric, kwargs) in METRICS.items():
4344
for k in (1, 3, 5):
4445
for dualtree in (True, False):
4546
for breadth_first in (True, False):
4647
yield (check_neighbors,
4748
dualtree, breadth_first,
48-
k, metric, kwargs)
49+
k, metric, X, Y, kwargs)
4950

5051

5152
def test_kd_tree_query_radius(n_samples=100, n_features=10):
@@ -107,6 +108,14 @@ def compute_kernel_slow(Y, X, kernel, h):
107108
raise ValueError('kernel not recognized')
108109

109110

111+
def check_results(kernel, h, atol, rtol, breadth_first, Y, kdt, dens_true):
112+
dens = kdt.kernel_density(Y, h, atol=atol, rtol=rtol,
113+
kernel=kernel,
114+
breadth_first=breadth_first)
115+
assert_allclose(dens, dens_true, atol=atol,
116+
rtol=max(rtol, 1e-7))
117+
118+
110119
def test_kd_tree_kde(n_samples=100, n_features=3):
111120
np.random.seed(0)
112121
X = np.random.random((n_samples, n_features))
@@ -118,18 +127,11 @@ def test_kd_tree_kde(n_samples=100, n_features=3):
118127
for h in [0.01, 0.1, 1]:
119128
dens_true = compute_kernel_slow(Y, X, kernel, h)
120129

121-
def check_results(kernel, h, atol, rtol, breadth_first):
122-
dens = kdt.kernel_density(Y, h, atol=atol, rtol=rtol,
123-
kernel=kernel,
124-
breadth_first=breadth_first)
125-
assert_allclose(dens, dens_true, atol=atol,
126-
rtol=max(rtol, 1e-7))
127-
128130
for rtol in [0, 1E-5]:
129131
for atol in [1E-6, 1E-2]:
130132
for breadth_first in (True, False):
131133
yield (check_results, kernel, h, atol, rtol,
132-
breadth_first)
134+
breadth_first, Y, kdt, dens_true)
133135

134136

135137
def test_gaussian_kde(n_samples=1000):

sklearn/neighbors/tests/test_kde.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@ def compute_kernel_slow(Y, X, kernel, h):
2929
raise ValueError('kernel not recognized')
3030

3131

32+
def check_results(kernel, bandwidth, atol, rtol, X, Y, dens_true):
33+
kde = KernelDensity(kernel=kernel, bandwidth=bandwidth,
34+
atol=atol, rtol=rtol)
35+
log_dens = kde.fit(X).score_samples(Y)
36+
assert_allclose(np.exp(log_dens), dens_true,
37+
atol=atol, rtol=max(1E-7, rtol))
38+
assert_allclose(np.exp(kde.score(Y)),
39+
np.prod(dens_true),
40+
atol=atol, rtol=max(1E-7, rtol))
41+
42+
3243
def test_kernel_density(n_samples=100, n_features=3):
3344
rng = np.random.RandomState(0)
3445
X = rng.randn(n_samples, n_features)
@@ -39,20 +50,11 @@ def test_kernel_density(n_samples=100, n_features=3):
3950
for bandwidth in [0.01, 0.1, 1]:
4051
dens_true = compute_kernel_slow(Y, X, kernel, bandwidth)
4152

42-
def check_results(kernel, bandwidth, atol, rtol):
43-
kde = KernelDensity(kernel=kernel, bandwidth=bandwidth,
44-
atol=atol, rtol=rtol)
45-
log_dens = kde.fit(X).score_samples(Y)
46-
assert_allclose(np.exp(log_dens), dens_true,
47-
atol=atol, rtol=max(1E-7, rtol))
48-
assert_allclose(np.exp(kde.score(Y)),
49-
np.prod(dens_true),
50-
atol=atol, rtol=max(1E-7, rtol))
51-
5253
for rtol in [0, 1E-5]:
5354
for atol in [1E-6, 1E-2]:
5455
for breadth_first in (True, False):
55-
yield (check_results, kernel, bandwidth, atol, rtol)
56+
yield (check_results, kernel, bandwidth, atol, rtol,
57+
X, Y, dens_true)
5658

5759

5860
def test_kernel_density_sampling(n_samples=100, n_features=3):

0 commit comments

Comments
 (0)
0