mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-06-08 15:05:15 +02:00
format on save
This commit is contained in:
parent
4edfff6596
commit
1e5dd36bc7
1 changed files with 69 additions and 26 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue