mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-15 06:52:39 +02:00
Merge branch 'naniny' into devel
This commit is contained in:
commit
622f2e29aa
32 changed files with 748 additions and 689 deletions
|
|
@ -4,20 +4,20 @@ Created on 14 Nov 2013
|
|||
@author: maxz
|
||||
'''
|
||||
|
||||
from _models.bayesian_gplvm import BayesianGPLVM
|
||||
from _models.gp_regression import GPRegression
|
||||
from _models.gp_classification import GPClassification#; _gp_classification = gp_classification ; del gp_classification
|
||||
from _models.sparse_gp_regression import SparseGPRegression#; _sparse_gp_regression = sparse_gp_regression ; del sparse_gp_regression
|
||||
from _models.svigp_regression import SVIGPRegression#; _svigp_regression = svigp_regression ; del svigp_regression
|
||||
from _models.sparse_gp_classification import SparseGPClassification#; _sparse_gp_classification = sparse_gp_classification ; del sparse_gp_classification
|
||||
from _models.fitc_classification import FITCClassification#; _fitc_classification = fitc_classification ; del fitc_classification
|
||||
from _models.gplvm import GPLVM#; _gplvm = gplvm ; del gplvm
|
||||
from _models.bcgplvm import BCGPLVM#; _bcgplvm = bcgplvm; del bcgplvm
|
||||
from _models.sparse_gplvm import SparseGPLVM#; _sparse_gplvm = sparse_gplvm ; del sparse_gplvm
|
||||
from _models.warped_gp import WarpedGP#; _warped_gp = warped_gp ; del warped_gp
|
||||
from _models.bayesian_gplvm import BayesianGPLVM#; _bayesian_gplvm = bayesian_gplvm ; del bayesian_gplvm
|
||||
from _models.mrd import MRD#; _mrd = mrd; del mrd
|
||||
from _models.gradient_checker import GradientChecker#; _gradient_checker = gradient_checker ; del gradient_checker
|
||||
from _models.gp_multioutput_regression import GPMultioutputRegression#; _gp_multioutput_regression = gp_multioutput_regression ; del gp_multioutput_regression
|
||||
from _models.sparse_gp_multioutput_regression import SparseGPMultioutputRegression#; _sparse_gp_multioutput_regression = sparse_gp_multioutput_regression ; del sparse_gp_multioutput_regression
|
||||
from _models.gradient_checker import GradientChecker
|
||||
from models_modules.bayesian_gplvm import BayesianGPLVM
|
||||
from models_modules.gp_regression import GPRegression
|
||||
from models_modules.gp_classification import GPClassification#; _gp_classification = gp_classification ; del gp_classification
|
||||
from models_modules.sparse_gp_regression import SparseGPRegression#; _sparse_gp_regression = sparse_gp_regression ; del sparse_gp_regression
|
||||
from models_modules.svigp_regression import SVIGPRegression#; _svigp_regression = svigp_regression ; del svigp_regression
|
||||
from models_modules.sparse_gp_classification import SparseGPClassification#; _sparse_gp_classification = sparse_gp_classification ; del sparse_gp_classification
|
||||
from models_modules.fitc_classification import FITCClassification#; _fitc_classification = fitc_classification ; del fitc_classification
|
||||
from models_modules.gplvm import GPLVM#; _gplvm = gplvm ; del gplvm
|
||||
from models_modules.bcgplvm import BCGPLVM#; _bcgplvm = bcgplvm; del bcgplvm
|
||||
from models_modules.sparse_gplvm import SparseGPLVM#; _sparse_gplvm = sparse_gplvm ; del sparse_gplvm
|
||||
from models_modules.warped_gp import WarpedGP#; _warped_gp = warped_gp ; del warped_gp
|
||||
from models_modules.bayesian_gplvm import BayesianGPLVM#; _bayesian_gplvm = bayesian_gplvm ; del bayesian_gplvm
|
||||
from models_modules.mrd import MRD#; _mrd = mrd; del mrd
|
||||
from models_modules.gradient_checker import GradientChecker#; _gradient_checker = gradient_checker ; del gradient_checker
|
||||
from models_modules.gp_multioutput_regression import GPMultioutputRegression#; _gp_multioutput_regression = gp_multioutput_regression ; del gp_multioutput_regression
|
||||
from models_modules.sparse_gp_multioutput_regression import SparseGPMultioutputRegression#; _sparse_gp_multioutput_regression = sparse_gp_multioutput_regression ; del sparse_gp_multioutput_regression
|
||||
from models_modules.gradient_checker import GradientChecker
|
||||
|
|
@ -12,6 +12,7 @@ from GPy.util import plot_latent, linalg
|
|||
from .gplvm import GPLVM
|
||||
from GPy.util.plot_latent import most_significant_input_dimensions
|
||||
from matplotlib import pyplot
|
||||
from GPy.core.model import Model
|
||||
|
||||
class BayesianGPLVM(SparseGP, GPLVM):
|
||||
"""
|
||||
|
|
@ -285,6 +286,57 @@ class BayesianGPLVM(SparseGP, GPLVM):
|
|||
self.init = state.pop()
|
||||
SparseGP.setstate(self, state)
|
||||
|
||||
class BayesianGPLVMWithMissingData(Model):
|
||||
"""
|
||||
Bayesian Gaussian Process Latent Variable Model with missing data support.
|
||||
NOTE: Missing data is assumed to be missing at random!
|
||||
|
||||
This extension comes with a large memory and computing time deficiency.
|
||||
Use only if fraction of missing data at random is higher than 60%.
|
||||
Otherwise, try filtering data before using this extension.
|
||||
|
||||
Y can hold missing data as given by `missing`, standard is :class:`~numpy.nan`.
|
||||
|
||||
If likelihood is given for Y, this likelihood will be discarded, but the parameters
|
||||
of the likelihood will be taken. Also every effort of creating the same likelihood
|
||||
will be done.
|
||||
|
||||
:param likelihood_or_Y: observed data (np.ndarray) or GPy.likelihood
|
||||
:type likelihood_or_Y: :class:`~numpy.ndarray` | :class:`~GPy.likelihoods.likelihood.likelihood` instance
|
||||
:param int input_dim: latent dimensionality
|
||||
:param init: initialisation method for the latent space
|
||||
:type init: 'PCA' | 'random'
|
||||
"""
|
||||
def __init__(self, likelihood_or_Y, input_dim, X=None, X_variance=None, init='PCA', num_inducing=10,
|
||||
Z=None, kernel=None, missing=np.nan, **kwargs):
|
||||
if type(likelihood_or_Y) is np.ndarray:
|
||||
likelihood = Gaussian(likelihood_or_Y)
|
||||
else:
|
||||
likelihood = likelihood_or_Y
|
||||
|
||||
if X == None:
|
||||
X = self.initialise_latent(init, input_dim, likelihood.Y)
|
||||
self.init = init
|
||||
|
||||
if X_variance is None:
|
||||
X_variance = np.clip((np.ones_like(X) * 0.5) + .01 * np.random.randn(*X.shape), 0.001, 1)
|
||||
|
||||
if Z is None:
|
||||
Z = np.random.permutation(X.copy())[:num_inducing]
|
||||
assert Z.shape[1] == X.shape[1]
|
||||
|
||||
if kernel is None:
|
||||
kernel = kern.rbf(input_dim) # + kern.white(input_dim)
|
||||
|
||||
SparseGP.__init__(self, X, likelihood, kernel, Z=Z, X_variance=X_variance, **kwargs)
|
||||
self.ensure_default_constraints()
|
||||
|
||||
def _get_param_names(self):
|
||||
X_names = sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], [])
|
||||
S_names = sum([['X_variance_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], [])
|
||||
return (X_names + S_names + SparseGP._get_param_names(self))
|
||||
|
||||
pass
|
||||
|
||||
def latent_cost_and_grad(mu_S, kern, Z, dL_dpsi0, dL_dpsi1, dL_dpsi2):
|
||||
"""
|
||||
Loading…
Add table
Add a link
Reference in a new issue