[density] plotting of likelihoods permitted

This commit is contained in:
mzwiessele 2015-10-02 07:47:57 +01:00
parent d8243383b4
commit fee2f3f727
2 changed files with 13 additions and 17 deletions

View file

@ -272,7 +272,7 @@ class GP(Model):
mean, var = self.likelihood.predictive_values(mu, var, full_cov, Y_metadata=Y_metadata) mean, var = self.likelihood.predictive_values(mu, var, full_cov, Y_metadata=Y_metadata)
return mean, var return mean, var
def predict_quantiles(self, X, quantiles=(2.5, 97.5), Y_metadata=None, kern=None): def predict_quantiles(self, X, quantiles=(2.5, 97.5), Y_metadata=None, kern=None, likelihood=None):
""" """
Get the predictive quantiles around the prediction at X Get the predictive quantiles around the prediction at X
@ -288,7 +288,9 @@ class GP(Model):
m, v = self._raw_predict(X, full_cov=False, kern=kern) m, v = self._raw_predict(X, full_cov=False, kern=kern)
if self.normalizer is not None: if self.normalizer is not None:
m, v = self.normalizer.inverse_mean(m), self.normalizer.inverse_variance(v) m, v = self.normalizer.inverse_mean(m), self.normalizer.inverse_variance(v)
return self.likelihood.predictive_quantiles(m, v, quantiles, Y_metadata=Y_metadata) if likelihood is None:
likelihood = self.likelihood
return likelihood.predictive_quantiles(m, v, quantiles, Y_metadata=Y_metadata)
def predictive_gradients(self, Xnew): def predictive_gradients(self, Xnew):
""" """

View file

@ -9,7 +9,7 @@ from ...models.sparse_gp_coregionalized_regression import SparseGPCoregionalized
from scipy import sparse from scipy import sparse
from ...core.parameterization.variational import VariationalPosterior from ...core.parameterization.variational import VariationalPosterior
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
from GPy.plotting.matplot_dep.base_plots import plot_gradient_fill from .base_plots import plot_gradient_fill
def plot_data(model, which_data_rows='all', def plot_data(model, which_data_rows='all',
@ -336,19 +336,9 @@ def plot_density(model, levels=20, plot_limits=None, fignum=None, ax=None,
#make a prediction on the frame and plot it #make a prediction on the frame and plot it
if plot_raw: if plot_raw:
raise NotImplementedError('What to do? What to do?') from scipy import stats
#=================================================================== from ...likelihoods import Gaussian
# m, v = model._raw_predict(Xgrid, **predict_kw) lik = Gaussian(variance=0)
# percentiles = model.predict_quantiles(Xgrid, )
# if apply_link:
# lower = model.likelihood.gp_link.transf(m - 2*np.sqrt(v))
# upper = model.likelihood.gp_link.transf(m + 2*np.sqrt(v))
# #Once transformed this is now the median of the function
# m = model.likelihood.gp_link.transf(m)
# else:
# lower = m - 2*np.sqrt(v)
# upper = m + 2*np.sqrt(v)
#===================================================================
else: else:
if isinstance(model,GPCoregionalizedRegression) or isinstance(model,SparseGPCoregionalizedRegression): if isinstance(model,GPCoregionalizedRegression) or isinstance(model,SparseGPCoregionalizedRegression):
extra_data = Xgrid[:,-1:].astype(np.int) extra_data = Xgrid[:,-1:].astype(np.int)
@ -356,7 +346,11 @@ def plot_density(model, levels=20, plot_limits=None, fignum=None, ax=None,
Y_metadata = {'output_index': extra_data} Y_metadata = {'output_index': extra_data}
else: else:
Y_metadata['output_index'] = extra_data Y_metadata['output_index'] = extra_data
percentiles = [i[:, 0] for i in model.predict_quantiles(Xgrid, percs, Y_metadata=Y_metadata, **predict_kw)] lik = None
percentiles = [i[:, 0] for i in model.predict_quantiles(Xgrid, percs, Y_metadata=Y_metadata, likelihood=lik, **predict_kw)]
if apply_link:
percentiles = model.likelihood.gp_link.transf(percentiles)
patch_kwargs['facecolor'] = facecolor patch_kwargs['facecolor'] = facecolor
patch_kwargs['edgecolor'] = edgecolor patch_kwargs['edgecolor'] = edgecolor
plots['density'] = plot_gradient_fill(ax, Xgrid[:, 0], percentiles, **patch_kwargs) plots['density'] = plot_gradient_fill(ax, Xgrid[:, 0], percentiles, **patch_kwargs)