From 68ece192118deb816c1513cd59f712909db37af7 Mon Sep 17 00:00:00 2001 From: Alan Saul Date: Fri, 29 Nov 2013 14:20:33 +0000 Subject: [PATCH] Fixed gp_base and svigp for sampling (doesn't use it but needs the arguments) --- GPy/core/gp_base.py | 12 ++++++------ GPy/core/svigp.py | 5 ++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/GPy/core/gp_base.py b/GPy/core/gp_base.py index 548e2924..2577e06c 100644 --- a/GPy/core/gp_base.py +++ b/GPy/core/gp_base.py @@ -16,7 +16,7 @@ class GPBase(Model): def __init__(self, X, likelihood, kernel, normalize_X=False): if len(X.shape)==1: X = X.reshape(-1,1) - warning.warn("One dimension output (N,) being reshaped to (N,1)") + warnings.warn("One dimension output (N,) being reshaped to (N,1)") self.X = X assert len(self.X.shape) == 2, "too many dimensions for X input" self.num_data, self.input_dim = self.X.shape @@ -76,7 +76,7 @@ class GPBase(Model): :type noise_model: integer. :returns: Ysim: set of simulations, a Numpy array (N x samples). """ - Ysim = self.posterior_samples_f(X, size, which_parts=which_parts, full_cov=True) + Ysim = self.posterior_samples_f(X, size, which_parts=which_parts) if isinstance(self.likelihood,Gaussian): noise_std = np.sqrt(self.likelihood._get_params()) Ysim += np.random.normal(0,noise_std,Ysim.shape) @@ -107,7 +107,7 @@ class GPBase(Model): levels=20, samples=0, fignum=None, ax=None, resolution=None, plot_raw=False, linecol=Tango.colorsHex['darkBlue'],fillcol=Tango.colorsHex['lightBlue']): - """ + """ Plot the posterior of the GP. - In one dimension, the function is plotted with a shaded region identifying two standard deviations. - In two dimsensions, a contour-plot shows the mean predicted function @@ -176,8 +176,8 @@ class GPBase(Model): upper = m + 2*np.sqrt(v) Y = self.likelihood.Y else: - m, v, lower, upper = self.predict(Xgrid, which_parts=which_parts,sampling=False) #Compute the exact mean - m_, v_, lower, upper = self.predict(Xgrid, which_parts=which_parts,sampling=True,num_samples=15000) #Apporximate the percentiles + m, v, lower, upper = self.predict(Xgrid, which_parts=which_parts, sampling=False) #Compute the exact mean + m_, v_, lower, upper = self.predict(Xgrid, which_parts=which_parts, sampling=True, num_samples=15000) #Apporximate the percentiles Y = self.likelihood.data for d in which_data_ycols: gpplot(Xnew, m[:, d], lower[:, d], upper[:, d], axes=ax, edgecol=linecol, fillcol=fillcol) @@ -185,7 +185,7 @@ class GPBase(Model): #optionally plot some samples if samples: #NOTE not tested with fixed_inputs - Ysim = self.posterior_samples(Xgrid, samples, which_parts=which_parts, full_cov=True) + Ysim = self.posterior_samples(Xgrid, samples, which_parts=which_parts) for yi in Ysim.T: ax.plot(Xnew, yi[:,None], Tango.colorsHex['darkBlue'], linewidth=0.25) #ax.plot(Xnew, yi[:,None], marker='x', linestyle='--',color=Tango.colorsHex['darkBlue']) #TODO apply this line for discrete outputs. diff --git a/GPy/core/svigp.py b/GPy/core/svigp.py index 9f27f465..fdd95aa8 100644 --- a/GPy/core/svigp.py +++ b/GPy/core/svigp.py @@ -31,7 +31,6 @@ class SVIGP(GPBase): """ - def __init__(self, X, likelihood, kernel, Z, q_u=None, batchsize=10, X_variance=None): GPBase.__init__(self, X, likelihood, kernel, normalize_X=False) self.batchsize=batchsize @@ -433,7 +432,7 @@ class SVIGP(GPBase): else: return mu, diag_var[:,None] - def predict(self, Xnew, X_variance_new=None, which_parts='all', full_cov=False): + def predict(self, Xnew, X_variance_new=None, which_parts='all', full_cov=False, sampling=False, num_samples=15000): # normalize X values Xnew = (Xnew.copy() - self._Xoffset) / self._Xscale if X_variance_new is not None: @@ -443,7 +442,7 @@ class SVIGP(GPBase): mu, var = self._raw_predict(Xnew, X_variance_new, full_cov=full_cov, which_parts=which_parts) # now push through likelihood - mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov) + mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov, sampling=sampling, num_samples=num_samples) return mean, var, _025pm, _975pm