GPCoregionalizedRegresssion added

This commit is contained in:
Ricardo 2014-03-12 12:52:52 +00:00
parent 45973dce10
commit 6ced5b1242
4 changed files with 110 additions and 7 deletions

View file

@ -27,7 +27,7 @@ class GP(Model):
"""
def __init__(self, X, Y, kernel, likelihood, inference_method=None, Y_metadata=None, name='gp'):
def __init__(self, X, Y, kernel, likelihood, inference_method=None, name='gp', **Y_metadata):
super(GP, self).__init__(name)
assert X.ndim == 2
@ -43,7 +43,7 @@ class GP(Model):
_, self.output_dim = self.Y.shape
if Y_metadata is not None:
self.Y_metadata = ObservableArray(Y_metadata)
self.Y_metadata = Y_metadata
else:
self.Y_metadata = None
@ -56,7 +56,7 @@ class GP(Model):
#find a sensible inference method
if inference_method is None:
if isinstance(likelihood, likelihoods.Gaussian):
if isinstance(likelihood, likelihoods.Gaussian) or isinstance(likelihood, likelihoods.MixedNoise):
inference_method = exact_gaussian_inference.ExactGaussianInference()
else:
inference_method = expectation_propagation
@ -67,7 +67,8 @@ class GP(Model):
self.add_parameter(self.likelihood)
def parameters_changed(self):
self.posterior, self._log_marginal_likelihood, grad_dict = self.inference_method.inference(self.kern, self.X, self.likelihood, self.Y, Y_metadata=self.Y_metadata)
self.posterior, self._log_marginal_likelihood, grad_dict = self.inference_method.inference(self.kern, self.X, self.likelihood, self.Y, **self.Y_metadata)
self.likelihood.update_gradients(np.diag(grad_dict['dL_dK']), **self.Y_metadata)
self.kern.update_gradients_full(grad_dict['dL_dK'], self.X)
def log_likelihood(self):