mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-07-17 16:41:04 +02:00
migrate ep_likelihood_test to pytest
This commit is contained in:
parent
1e5dd36bc7
commit
4d41594e18
1 changed files with 25 additions and 22 deletions
|
|
@ -3,14 +3,18 @@ import unittest
|
||||||
import GPy
|
import GPy
|
||||||
from GPy.models import GradientChecker
|
from GPy.models import GradientChecker
|
||||||
|
|
||||||
|
|
||||||
fixed_seed = 10
|
fixed_seed = 10
|
||||||
from nose.tools import with_setup, nottest
|
|
||||||
|
|
||||||
|
def rmse(Y, Ystar):
|
||||||
|
return np.sqrt(np.mean((Y - Ystar) ** 2))
|
||||||
|
|
||||||
|
|
||||||
# this file will contain some high level tests, this is not unit testing, but will give us a higher level estimate
|
# this file will contain some high level tests, this is not unit testing, but will give us a higher level estimate
|
||||||
# if things are going well under the hood.
|
# if things are going well under the hood.
|
||||||
class TestObservationModels(unittest.TestCase):
|
class TestObservationModels:
|
||||||
def setUp(self):
|
def setup(self):
|
||||||
np.random.seed(fixed_seed)
|
np.random.seed(fixed_seed)
|
||||||
self.N = 100
|
self.N = 100
|
||||||
self.D = 2
|
self.D = 2
|
||||||
|
|
@ -38,15 +42,17 @@ class TestObservationModels(unittest.TestCase):
|
||||||
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])
|
self.kernel1 = GPy.kern.RBF(self.X.shape[1]) + GPy.kern.White(self.X.shape[1])
|
||||||
|
|
||||||
def tearDown(self):
|
def tear_down(self):
|
||||||
self.Y = None
|
self.Y = None
|
||||||
self.X = None
|
self.X = None
|
||||||
self.binary_Y = None
|
self.binary_Y = None
|
||||||
self.positive_Y = None
|
self.positive_Y = None
|
||||||
self.kernel1 = None
|
self.kernel1 = None
|
||||||
|
|
||||||
@with_setup(setUp, tearDown)
|
def test_epccassification(self):
|
||||||
def testEPClassification(self):
|
self.setup()
|
||||||
|
self.tear_down()
|
||||||
|
|
||||||
bernoulli = GPy.likelihoods.Bernoulli()
|
bernoulli = GPy.likelihoods.Bernoulli()
|
||||||
laplace_inf = GPy.inference.latent_function_inference.Laplace()
|
laplace_inf = GPy.inference.latent_function_inference.Laplace()
|
||||||
|
|
||||||
|
|
@ -111,23 +117,22 @@ class TestObservationModels(unittest.TestCase):
|
||||||
probs_mean_ep_nested, probs_var_ep_nested = m3.predict(self.X)
|
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.
|
# 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)
|
# TODO: the below were assertAlmostEqual, not sure if allclose will do the job here
|
||||||
self.assertAlmostEqual(m1.log_likelihood(), m3.log_likelihood(), delta=1)
|
assert np.allclose(m1.log_likelihood(), m2.log_likelihood()) # , delta=1
|
||||||
self.assertAlmostEqual(m1.log_likelihood(), m4.log_likelihood(), delta=5)
|
assert np.allcose(m1.log_likelihood(), m3.log_likelihood()) # , delta=1
|
||||||
|
assert np.allclose(m1.log_likelihood(), m4.log_likelihood()) # , delta=5
|
||||||
|
|
||||||
GPy.util.classification.conf_matrix(probs_mean_lap, self.binary_Y)
|
GPy.util.classification.conf_matrix(probs_mean_lap, self.binary_Y)
|
||||||
GPy.util.classification.conf_matrix(probs_mean_ep_alt, self.binary_Y)
|
GPy.util.classification.conf_matrix(probs_mean_ep_alt, self.binary_Y)
|
||||||
GPy.util.classification.conf_matrix(probs_mean_ep_nested, self.binary_Y)
|
GPy.util.classification.conf_matrix(probs_mean_ep_nested, self.binary_Y)
|
||||||
|
|
||||||
@nottest
|
@pytest.skip(
|
||||||
def rmse(self, Y, Ystar):
|
|
||||||
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!"
|
"Fails as a consequence of fixing the DSYR function. Needs to be reviewed!"
|
||||||
)
|
)
|
||||||
def test_EP_with_StudentT(self):
|
def test_ep_with_studentt(self):
|
||||||
|
self.setup()
|
||||||
|
self.tear_down()
|
||||||
|
|
||||||
studentT = GPy.likelihoods.StudentT(
|
studentT = GPy.likelihoods.StudentT(
|
||||||
deg_free=self.deg_free, sigma2=self.init_var
|
deg_free=self.deg_free, sigma2=self.init_var
|
||||||
)
|
)
|
||||||
|
|
@ -171,7 +176,8 @@ class TestObservationModels(unittest.TestCase):
|
||||||
m2.optimize(optimizer=optimizer, max_iters=400)
|
m2.optimize(optimizer=optimizer, max_iters=400)
|
||||||
# m3.optimize(optimizer=optimizer, max_iters=500)
|
# m3.optimize(optimizer=optimizer, max_iters=500)
|
||||||
|
|
||||||
self.assertAlmostEqual(m1.log_likelihood(), m2.log_likelihood(), delta=200)
|
# TODO: this was assertAlmostEqual, not sure if allclose will do the job here
|
||||||
|
assert np.allclose(m1.log_likelihood(), m2.log_likelihood()) # , delta=200
|
||||||
|
|
||||||
# self.assertAlmostEqual(m1.log_likelihood(), m3.log_likelihood(), 3)
|
# self.assertAlmostEqual(m1.log_likelihood(), m3.log_likelihood(), 3)
|
||||||
|
|
||||||
|
|
@ -183,9 +189,6 @@ class TestObservationModels(unittest.TestCase):
|
||||||
# rmse_nested = self.rmse(preds_mean_nested, self.Y_noisy)
|
# rmse_nested = self.rmse(preds_mean_nested, self.Y_noisy)
|
||||||
|
|
||||||
if rmse_alt > rmse_lap:
|
if rmse_alt > rmse_lap:
|
||||||
self.assertAlmostEqual(rmse_lap, rmse_alt, delta=1.5)
|
# TODO: this was assertAlmostEqual, not sure if allclose will do the job here
|
||||||
|
assert np.allclose(rmse_lap, rmse_alt) # , delta=1.5
|
||||||
# m3.optimize(optimizer=optimizer, max_iters=500)
|
# m3.optimize(optimizer=optimizer, max_iters=500)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
unittest.main()
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue