removed some X_normalising things

This commit is contained in:
James Hensman 2014-01-24 10:24:17 +00:00
parent b9a51a2ab8
commit 63ec89567f

View file

@ -9,7 +9,8 @@ from ..util.plot import gpplot, Tango, x_frame1D, x_frame2D
from model import Model from model import Model
from parameterization import ObservableArray from parameterization import ObservableArray
from .. import likelihoods from .. import likelihoods
from GPy.likelihoods.gaussian import Gaussian from ..likelihoods.gaussian import Gaussian
from ..inference.latent_function_inference import exact_gaussian_inference
class GP(Model): class GP(Model):
""" """
@ -26,7 +27,7 @@ class GP(Model):
""" """
def __init__(self, X, Y, kernel, likelihood, inference_method=None, name='gp'): def __init__(self, X, Y, kernel, likelihood, inference_method=None, name='gp'):
super(GPBase, self).__init__(name) super(GP, self).__init__(name)
assert X.ndim == 2 assert X.ndim == 2
self.X = ObservableArray(X) self.X = ObservableArray(X)
@ -50,13 +51,13 @@ class GP(Model):
else: else:
inference_method = expectation_propagation inference_method = expectation_propagation
print "defaulting to ", inference_method, "for latent function inference" print "defaulting to ", inference_method, "for latent function inference"
self.inference_method = inference_method
super(GP, self).__init__(X, Y, kernel, likelihood, inference_method, name)
self.parameters_changed()
self.add_parameter(self.kern, gradient=self.dL_dtheta_K) self.add_parameter(self.kern, gradient=self.dL_dtheta_K)
self.add_parameter(self.likelihood, gradient=lambda:self.posterior.dL_dtheta_lik) self.add_parameter(self.likelihood, gradient=lambda:self.posterior.dL_dtheta_lik)
self.parameters_changed()
def parameters_changed(self): def parameters_changed(self):
super(GP, self).parameters_changed() super(GP, self).parameters_changed()
self.K = self.kern.K(self.X) self.K = self.kern.K(self.X)
@ -241,8 +242,7 @@ class GP(Model):
#define the frame on which to plot #define the frame on which to plot
resolution = resolution or 200 resolution = resolution or 200
Xu = self.X * self._Xscale + self._Xoffset #NOTE self.X are the normalized values now Xnew, xmin, xmax = x_frame1D(self.X[:,free_dims], plot_limits=plot_limits)
Xnew, xmin, xmax = x_frame1D(Xu[:,free_dims], plot_limits=plot_limits)
Xgrid = np.empty((Xnew.shape[0],self.input_dim)) Xgrid = np.empty((Xnew.shape[0],self.input_dim))
Xgrid[:,free_dims] = Xnew Xgrid[:,free_dims] = Xnew
for i,v in fixed_inputs: for i,v in fixed_inputs:
@ -259,7 +259,7 @@ class GP(Model):
Y = self.Y Y = self.Y
for d in which_data_ycols: for d in which_data_ycols:
gpplot(Xnew, m[:, d], lower[:, d], upper[:, d], axes=ax, edgecol=linecol, fillcol=fillcol) gpplot(Xnew, m[:, d], lower[:, d], upper[:, d], axes=ax, edgecol=linecol, fillcol=fillcol)
ax.plot(Xu[which_data_rows,free_dims], Y[which_data_rows, d], 'kx', mew=1.5) ax.plot(self.X[which_data_rows,free_dims], Y[which_data_rows, d], 'kx', mew=1.5)
#optionally plot some samples #optionally plot some samples
if samples: #NOTE not tested with fixed_inputs if samples: #NOTE not tested with fixed_inputs
@ -279,8 +279,7 @@ class GP(Model):
#define the frame for plotting on #define the frame for plotting on
resolution = resolution or 50 resolution = resolution or 50
Xu = self.X * self._Xscale + self._Xoffset #NOTE self.X are the normalized values now Xnew, _, _, xmin, xmax = x_frame2D(self.X[:,free_dims], plot_limits, resolution)
Xnew, _, _, xmin, xmax = x_frame2D(Xu[:,free_dims], plot_limits, resolution)
Xgrid = np.empty((Xnew.shape[0],self.input_dim)) Xgrid = np.empty((Xnew.shape[0],self.input_dim))
Xgrid[:,free_dims] = Xnew Xgrid[:,free_dims] = Xnew
for i,v in fixed_inputs: for i,v in fixed_inputs: