From 1e5dd36bc7cf2a1060f03efcc219a3ce3f49a19c Mon Sep 17 00:00:00 2001 From: Martin Bubel Date: Wed, 4 Oct 2023 20:38:20 +0200 Subject: [PATCH] format on save --- GPy/testing/ep_likelihood_tests.py | 95 ++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 26 deletions(-) diff --git a/GPy/testing/ep_likelihood_tests.py b/GPy/testing/ep_likelihood_tests.py index cce22390..cf880c6e 100644 --- a/GPy/testing/ep_likelihood_tests.py +++ b/GPy/testing/ep_likelihood_tests.py @@ -1,4 +1,3 @@ - import numpy as np import unittest import GPy @@ -31,18 +30,18 @@ class TestObservationModels(unittest.TestCase): self.Y_noisy[75] += 1.3 self.init_var = 0.15 - self.deg_free = 4. + self.deg_free = 4.0 censored = np.zeros_like(self.Y) random_inds = np.random.choice(self.N, int(self.N / 2), replace=True) censored[random_inds] = 1 self.Y_metadata = dict() - self.Y_metadata['censored'] = censored + self.Y_metadata["censored"] = censored self.kernel1 = GPy.kern.RBF(self.X.shape[1]) + GPy.kern.White(self.X.shape[1]) def tearDown(self): self.Y = None self.X = None - self.binary_Y =None + self.binary_Y = None self.positive_Y = None self.kernel1 = None @@ -51,25 +50,51 @@ class TestObservationModels(unittest.TestCase): bernoulli = GPy.likelihoods.Bernoulli() laplace_inf = GPy.inference.latent_function_inference.Laplace() - ep_inf_alt = GPy.inference.latent_function_inference.EP(ep_mode='alternated') - ep_inf_nested = GPy.inference.latent_function_inference.EP(ep_mode='nested') - ep_inf_fractional = GPy.inference.latent_function_inference.EP(ep_mode='nested', eta=0.9) + ep_inf_alt = GPy.inference.latent_function_inference.EP(ep_mode="alternated") + ep_inf_nested = GPy.inference.latent_function_inference.EP(ep_mode="nested") + ep_inf_fractional = GPy.inference.latent_function_inference.EP( + ep_mode="nested", eta=0.9 + ) - m1 = GPy.core.GP(self.X, self.binary_Y.copy(), kernel=self.kernel1.copy(), likelihood=bernoulli.copy(), inference_method=laplace_inf) + m1 = GPy.core.GP( + self.X, + self.binary_Y.copy(), + kernel=self.kernel1.copy(), + likelihood=bernoulli.copy(), + inference_method=laplace_inf, + ) m1.randomize() - m2 = GPy.core.GP(self.X, self.binary_Y.copy(), kernel=self.kernel1.copy(), likelihood=bernoulli.copy(), inference_method=ep_inf_alt) + m2 = GPy.core.GP( + self.X, + self.binary_Y.copy(), + kernel=self.kernel1.copy(), + likelihood=bernoulli.copy(), + inference_method=ep_inf_alt, + ) m2.randomize() - m3 = GPy.core.GP(self.X, self.binary_Y.copy(), kernel=self.kernel1.copy(), likelihood=bernoulli.copy(), inference_method=ep_inf_nested) + m3 = GPy.core.GP( + self.X, + self.binary_Y.copy(), + kernel=self.kernel1.copy(), + likelihood=bernoulli.copy(), + inference_method=ep_inf_nested, + ) m3.randomize() # - m4 = GPy.core.GP(self.X, self.binary_Y.copy(), kernel=self.kernel1.copy(), likelihood=bernoulli.copy(), inference_method=ep_inf_fractional) + m4 = GPy.core.GP( + self.X, + self.binary_Y.copy(), + kernel=self.kernel1.copy(), + likelihood=bernoulli.copy(), + inference_method=ep_inf_fractional, + ) m4.randomize() - optimizer = 'bfgs' + optimizer = "bfgs" - #do gradcheck here ... + # do gradcheck here ... # self.assertTrue(m1.checkgrad()) # self.assertTrue(m2.checkgrad()) # self.assertTrue(m3.checkgrad()) @@ -86,7 +111,7 @@ class TestObservationModels(unittest.TestCase): probs_mean_ep_nested, probs_var_ep_nested = m3.predict(self.X) # for simple single dimension data , marginal likelihood for laplace and EP approximations should not be so far apart. - self.assertAlmostEqual(m1.log_likelihood(), m2.log_likelihood(),delta=1) + self.assertAlmostEqual(m1.log_likelihood(), m2.log_likelihood(), delta=1) self.assertAlmostEqual(m1.log_likelihood(), m3.log_likelihood(), delta=1) self.assertAlmostEqual(m1.log_likelihood(), m4.log_likelihood(), delta=5) @@ -99,22 +124,40 @@ class TestObservationModels(unittest.TestCase): return np.sqrt(np.mean((Y - Ystar) ** 2)) @with_setup(setUp, tearDown) - @unittest.skip("Fails as a consequence of fixing the DSYR function. Needs to be reviewed!") + @unittest.skip( + "Fails as a consequence of fixing the DSYR function. Needs to be reviewed!" + ) def test_EP_with_StudentT(self): - studentT = GPy.likelihoods.StudentT(deg_free=self.deg_free, sigma2=self.init_var) + studentT = GPy.likelihoods.StudentT( + deg_free=self.deg_free, sigma2=self.init_var + ) laplace_inf = GPy.inference.latent_function_inference.Laplace() - ep_inf_alt = GPy.inference.latent_function_inference.EP(ep_mode='alternated') - ep_inf_nested = GPy.inference.latent_function_inference.EP(ep_mode='nested') - ep_inf_frac = GPy.inference.latent_function_inference.EP(ep_mode='nested', eta=0.7) + ep_inf_alt = GPy.inference.latent_function_inference.EP(ep_mode="alternated") + ep_inf_nested = GPy.inference.latent_function_inference.EP(ep_mode="nested") + ep_inf_frac = GPy.inference.latent_function_inference.EP( + ep_mode="nested", eta=0.7 + ) - m1 = GPy.core.GP(self.X.copy(), self.Y_noisy.copy(), kernel=self.kernel1.copy(), likelihood=studentT.copy(), inference_method=laplace_inf) + m1 = GPy.core.GP( + self.X.copy(), + self.Y_noisy.copy(), + kernel=self.kernel1.copy(), + likelihood=studentT.copy(), + inference_method=laplace_inf, + ) # optimize - m1['.*white'].constrain_fixed(1e-5) + m1[".*white"].constrain_fixed(1e-5) m1.randomize() - m2 = GPy.core.GP(self.X.copy(), self.Y_noisy.copy(), kernel=self.kernel1.copy(), likelihood=studentT.copy(), inference_method=ep_inf_alt) - m2['.*white'].constrain_fixed(1e-5) + m2 = GPy.core.GP( + self.X.copy(), + self.Y_noisy.copy(), + kernel=self.kernel1.copy(), + likelihood=studentT.copy(), + inference_method=ep_inf_alt, + ) + m2[".*white"].constrain_fixed(1e-5) # m2.constrain_bounded('.*t_scale2', 0.001, 10) m2.randomize() @@ -123,12 +166,12 @@ class TestObservationModels(unittest.TestCase): # # m3.constrain_bounded('.*t_scale2', 0.001, 10) # m3.randomize() - optimizer='bfgs' - m1.optimize(optimizer=optimizer,max_iters=400) + optimizer = "bfgs" + m1.optimize(optimizer=optimizer, max_iters=400) m2.optimize(optimizer=optimizer, max_iters=400) # m3.optimize(optimizer=optimizer, max_iters=500) - self.assertAlmostEqual(m1.log_likelihood(), m2.log_likelihood(),delta=200) + self.assertAlmostEqual(m1.log_likelihood(), m2.log_likelihood(), delta=200) # self.assertAlmostEqual(m1.log_likelihood(), m3.log_likelihood(), 3)