From d8fb9fed6fe69849f4a73ac368bfb7b6cb039214 Mon Sep 17 00:00:00 2001 From: OmarManzoor Date: Fri, 7 Oct 2022 18:10:56 +0500 Subject: [PATCH 1/3] TST use global_random_seed in sklearn/gaussian_process/tests/test_gpc.py --- sklearn/gaussian_process/tests/test_gpc.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/sklearn/gaussian_process/tests/test_gpc.py b/sklearn/gaussian_process/tests/test_gpc.py index 2173f77c161c1..dfc7d1311abd9 100644 --- a/sklearn/gaussian_process/tests/test_gpc.py +++ b/sklearn/gaussian_process/tests/test_gpc.py @@ -118,11 +118,12 @@ def test_lml_gradient(kernel): assert_almost_equal(lml_gradient, lml_gradient_approx, 3) -def test_random_starts(): +def test_random_starts(global_random_seed): # Test that an increasing number of random-starts of GP fitting only # increases the log marginal likelihood of the chosen theta. n_samples, n_features = 25, 2 - rng = np.random.RandomState(0) + random_seed = global_random_seed % 10 + rng = np.random.RandomState(random_seed) X = rng.randn(n_samples, n_features) * 2 - 1 y = (np.sin(X).sum(axis=1) + np.sin(3 * X).sum(axis=1)) > 0 @@ -132,7 +133,9 @@ def test_random_starts(): last_lml = -np.inf for n_restarts_optimizer in range(5): gp = GaussianProcessClassifier( - kernel=kernel, n_restarts_optimizer=n_restarts_optimizer, random_state=0 + kernel=kernel, + n_restarts_optimizer=n_restarts_optimizer, + random_state=random_seed, ).fit(X, y) lml = gp.log_marginal_likelihood(gp.kernel_.theta) assert lml > last_lml - np.finfo(np.float32).eps @@ -140,11 +143,13 @@ def test_random_starts(): @pytest.mark.parametrize("kernel", non_fixed_kernels) -def test_custom_optimizer(kernel): +def test_custom_optimizer(kernel, global_random_seed): + X = np.atleast_2d(np.linspace(0, 5, 30)).T + # Test that GPC can use externally defined optimizers. # Define a dummy optimizer that simply tests 10 random hyperparameters def optimizer(obj_func, initial_theta, bounds): - rng = np.random.RandomState(0) + rng = np.random.RandomState(global_random_seed % 10) theta_opt, func_min = initial_theta, obj_func( initial_theta, eval_gradient=False ) From 6c607a1c29b007cbc9bf0c0a726286995b37ba7f Mon Sep 17 00:00:00 2001 From: OmarManzoor Date: Fri, 18 Nov 2022 17:18:32 +0500 Subject: [PATCH 2/3] Remove the % 10 conditions --- sklearn/gaussian_process/tests/test_gpc.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sklearn/gaussian_process/tests/test_gpc.py b/sklearn/gaussian_process/tests/test_gpc.py index dfc7d1311abd9..5759bec6087c5 100644 --- a/sklearn/gaussian_process/tests/test_gpc.py +++ b/sklearn/gaussian_process/tests/test_gpc.py @@ -122,8 +122,7 @@ def test_random_starts(global_random_seed): # Test that an increasing number of random-starts of GP fitting only # increases the log marginal likelihood of the chosen theta. n_samples, n_features = 25, 2 - random_seed = global_random_seed % 10 - rng = np.random.RandomState(random_seed) + rng = np.random.RandomState(global_random_seed) X = rng.randn(n_samples, n_features) * 2 - 1 y = (np.sin(X).sum(axis=1) + np.sin(3 * X).sum(axis=1)) > 0 @@ -135,7 +134,7 @@ def test_random_starts(global_random_seed): gp = GaussianProcessClassifier( kernel=kernel, n_restarts_optimizer=n_restarts_optimizer, - random_state=random_seed, + random_state=global_random_seed, ).fit(X, y) lml = gp.log_marginal_likelihood(gp.kernel_.theta) assert lml > last_lml - np.finfo(np.float32).eps @@ -149,7 +148,7 @@ def test_custom_optimizer(kernel, global_random_seed): # Test that GPC can use externally defined optimizers. # Define a dummy optimizer that simply tests 10 random hyperparameters def optimizer(obj_func, initial_theta, bounds): - rng = np.random.RandomState(global_random_seed % 10) + rng = np.random.RandomState(global_random_seed) theta_opt, func_min = initial_theta, obj_func( initial_theta, eval_gradient=False ) From caa7030ce0bdb022742027caac2f059cf1afc0c6 Mon Sep 17 00:00:00 2001 From: jeremiedbb Date: Wed, 15 Mar 2023 22:21:39 +0100 Subject: [PATCH 3/3] [azure parallel] [all random seeds] test_random_starts test_custom_optimizer --- sklearn/gaussian_process/tests/test_gpc.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sklearn/gaussian_process/tests/test_gpc.py b/sklearn/gaussian_process/tests/test_gpc.py index 5759bec6087c5..aefdb2e8ff0e2 100644 --- a/sklearn/gaussian_process/tests/test_gpc.py +++ b/sklearn/gaussian_process/tests/test_gpc.py @@ -143,8 +143,6 @@ def test_random_starts(global_random_seed): @pytest.mark.parametrize("kernel", non_fixed_kernels) def test_custom_optimizer(kernel, global_random_seed): - X = np.atleast_2d(np.linspace(0, 5, 30)).T - # Test that GPC can use externally defined optimizers. # Define a dummy optimizer that simply tests 10 random hyperparameters def optimizer(obj_func, initial_theta, bounds): @@ -164,9 +162,9 @@ def optimizer(obj_func, initial_theta, bounds): gpc = GaussianProcessClassifier(kernel=kernel, optimizer=optimizer) gpc.fit(X, y_mc) # Checks that optimizer improved marginal likelihood - assert gpc.log_marginal_likelihood(gpc.kernel_.theta) > gpc.log_marginal_likelihood( - kernel.theta - ) + assert gpc.log_marginal_likelihood( + gpc.kernel_.theta + ) >= gpc.log_marginal_likelihood(kernel.theta) @pytest.mark.parametrize("kernel", kernels)