From 2e609bd121df88124c29d5f4f91c1ef4a7fa926e Mon Sep 17 00:00:00 2001
From: Jan Hendrik Metzen <jhm@informatik.uni-bremen.de>
Date: Sun, 10 Aug 2014 17:11:18 +0200
Subject: [PATCH] TST regression test for optimum over several random-starts of
 GP

---
 .../tests/test_gaussian_process.py            | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/sklearn/gaussian_process/tests/test_gaussian_process.py b/sklearn/gaussian_process/tests/test_gaussian_process.py
index ef31237bb4..3085ede550 100644
--- a/sklearn/gaussian_process/tests/test_gaussian_process.py
+++ b/sklearn/gaussian_process/tests/test_gaussian_process.py
@@ -141,3 +141,27 @@ def test_no_normalize():
     gp = GaussianProcess(normalize=False).fit(X, y)
     y_pred = gp.predict(X)
     assert_true(np.allclose(y_pred, y))
+
+
+def test_random_starts():
+    """
+    Test that an increasing number of random-starts of GP fitting only
+    increases the reduced likelihood function of the optimal theta.
+    """
+    n_input_dims = 3
+    n_samples = 100
+    np.random.seed(0)
+    X = np.random.random(n_input_dims*n_samples).reshape(n_samples,
+                                                         n_input_dims) * 2 - 1
+    y = np.sin(X).sum(axis=1) + np.sin(3*X).sum(axis=1)
+    best_likelihood = -np.inf
+    for random_start in range(1, 10):
+        gp = GaussianProcess(regr="constant", corr="squared_exponential",
+                             theta0=[1e-0]*n_input_dims,
+                             thetaL=[1e-4]*n_input_dims,
+                             thetaU=[1e+1]*n_input_dims,
+                             random_start=random_start, random_state=0,
+                             verbose=False).fit(X, y)
+        rlf = gp.reduced_likelihood_function()[0]
+        assert_true(rlf >= best_likelihood)
+        best_likelihood = rlf
-- 
GitLab