mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-08 03:22:38 +02:00
Few more fix to the plotings and predictions
This commit is contained in:
parent
642b1449e1
commit
a1568ca1c8
1 changed files with 19 additions and 8 deletions
|
|
@ -137,7 +137,8 @@ class GP(model):
|
||||||
else:
|
else:
|
||||||
Kxx = self.kern.Kdiag(_Xnew, slices=slices)
|
Kxx = self.kern.Kdiag(_Xnew, slices=slices)
|
||||||
var = Kxx - np.sum(np.multiply(KiKx,Kx),0)
|
var = Kxx - np.sum(np.multiply(KiKx,Kx),0)
|
||||||
return mu, var[:,None]
|
var = var[:,None]
|
||||||
|
return mu, var
|
||||||
|
|
||||||
|
|
||||||
def predict(self,Xnew, slices=None, full_cov=False):
|
def predict(self,Xnew, slices=None, full_cov=False):
|
||||||
|
|
@ -171,12 +172,12 @@ class GP(model):
|
||||||
mu, var = self._raw_predict(Xnew, slices, full_cov)
|
mu, var = self._raw_predict(Xnew, slices, full_cov)
|
||||||
|
|
||||||
#now push through likelihood TODO
|
#now push through likelihood TODO
|
||||||
mean, _5pc, _95pc = self.likelihood.predictive_values(mu, var)
|
mean, _025pm, _975pm = self.likelihood.predictive_values(mu, var)
|
||||||
|
|
||||||
return mean, var, _5pc, _95pc
|
return mean, var, _025pm, _975pm
|
||||||
|
|
||||||
|
|
||||||
def plot_internal(self,samples=0,plot_limits=None,which_data='all',which_functions='all',resolution=None,full_cov=False):
|
def plot_f(self, samples=0, plot_limits=None, which_data='all', which_functions='all', resolution=None, full_cov=False):
|
||||||
"""
|
"""
|
||||||
Plot the GP's view of the world, where the data is normalised and the likelihood is Gaussian
|
Plot the GP's view of the world, where the data is normalised and the likelihood is Gaussian
|
||||||
|
|
||||||
|
|
@ -203,8 +204,17 @@ class GP(model):
|
||||||
|
|
||||||
if self.X.shape[1] == 1:
|
if self.X.shape[1] == 1:
|
||||||
Xnew, xmin, xmax = x_frame1D(self.X, plot_limits=plot_limits)
|
Xnew, xmin, xmax = x_frame1D(self.X, plot_limits=plot_limits)
|
||||||
m,v = self._raw_predict(Xnew, slices=which_functions)
|
if samples == 0:
|
||||||
gpplot(Xnew,m,m-np.sqrt(v),m+np.sqrt(v))
|
m,v = self._raw_predict(Xnew, slices=which_functions)
|
||||||
|
gpplot(Xnew,m,m-2*np.sqrt(v),m+2*np.sqrt(v))
|
||||||
|
pb.plot(self.X[which_data],self.likelihood.Y[which_data],'kx',mew=1.5)
|
||||||
|
else:
|
||||||
|
m,v = self._raw_predict(Xnew, slices=which_functions,full_cov=True)
|
||||||
|
Ysim = np.random.multivariate_normal(m.flatten(),v,samples)
|
||||||
|
gpplot(Xnew,m,m-2*np.sqrt(np.diag(v)[:,None]),m+2*np.sqrt(np.diag(v))[:,None])
|
||||||
|
for i in range(samples):
|
||||||
|
pb.plot(Xnew,Ysim[i,:],Tango.coloursHex['darkBlue'],linewidth=0.25)
|
||||||
|
|
||||||
pb.plot(self.X[which_data],self.likelihood.Y[which_data],'kx',mew=1.5)
|
pb.plot(self.X[which_data],self.likelihood.Y[which_data],'kx',mew=1.5)
|
||||||
pb.xlim(xmin,xmax)
|
pb.xlim(xmin,xmax)
|
||||||
elif self.X.shape[1] == 2:
|
elif self.X.shape[1] == 2:
|
||||||
|
|
@ -220,6 +230,7 @@ class GP(model):
|
||||||
raise NotImplementedError, "Cannot define a frame with more than two input dimensions"
|
raise NotImplementedError, "Cannot define a frame with more than two input dimensions"
|
||||||
|
|
||||||
def plot(self,samples=0,plot_limits=None,which_data='all',which_functions='all',resolution=None,full_cov=False):
|
def plot(self,samples=0,plot_limits=None,which_data='all',which_functions='all',resolution=None,full_cov=False):
|
||||||
|
# TODO include samples
|
||||||
if which_functions=='all':
|
if which_functions=='all':
|
||||||
which_functions = [True]*self.kern.Nparts
|
which_functions = [True]*self.kern.Nparts
|
||||||
if which_data=='all':
|
if which_data=='all':
|
||||||
|
|
@ -230,7 +241,7 @@ class GP(model):
|
||||||
m, var, lower, upper = self.predict(Xnew, slices=which_functions)
|
m, var, lower, upper = self.predict(Xnew, slices=which_functions)
|
||||||
gpplot(Xnew,m, lower, upper)
|
gpplot(Xnew,m, lower, upper)
|
||||||
pb.plot(self.X[which_data],self.likelihood.data[which_data],'kx',mew=1.5)
|
pb.plot(self.X[which_data],self.likelihood.data[which_data],'kx',mew=1.5)
|
||||||
ymin,ymax = lower.min(),upper.max() #self.likelihood.data.min()*1.2,self.likelihood.data.max()*1.2
|
ymin,ymax = lower.min(),upper.max()
|
||||||
pb.xlim(xmin,xmax)
|
pb.xlim(xmin,xmax)
|
||||||
pb.ylim(ymin,ymax)
|
pb.ylim(ymin,ymax)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue