mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-01 15:52:39 +02:00
[density] plotting of likelihoods permitted
This commit is contained in:
parent
d8243383b4
commit
fee2f3f727
2 changed files with 13 additions and 17 deletions
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue