def mrd_simulation_missing_data(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_matern(D1, D2, D3, N, num_inducing, plot_sim) # Ylist = [Ylist[0]] k = kern.Linear(Q, ARD=True) inanlist = [] for Y in Ylist: inan = _np.random.binomial(1, .6, size=Y.shape).astype(bool) inanlist.append(inan) Y[inan] = _np.nan m = MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernel=k, inference_method=None, initx="random", initz='permute', **kw) if optimize: print("Optimizing Model:") m.optimize('bfgs', messages=verbose, max_iters=8e3, gtol=.1) if plot: m.X.plot("MRD Latent Space 1D") m.plot_scales("MRD Scales") return m
def mrd_simulation(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD from GPy.likelihoods import Gaussian D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) likelihood_list = [Gaussian(x, normalize=True) for x in Ylist] k = kern.linear( Q, ARD=True) # + kern.bias(Q, _np.exp(-2)) + kern.white(Q, _np.exp(-2)) m = MRD(likelihood_list, input_dim=Q, num_inducing=num_inducing, kernels=k, initx="", initz='permute', **kw) m.ensure_default_constraints() for i, bgplvm in enumerate(m.bgplvms): m['{}_noise'.format(i)] = 1 #bgplvm.likelihood.Y.var() / 500. bgplvm.X_variance = bgplvm.X_variance #* .1 if optimize: print "Optimizing Model:" m.optimize(messages=verbose, max_iters=8e3, gtol=.1) if plot: m.plot_X_1d("MRD Latent Space 1D") m.plot_scales("MRD Scales") return m
def mrd_simulation(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_matern(D1, D2, D3, N, num_inducing, plot_sim) # Ylist = [Ylist[0]] k = kern.Linear(Q, ARD=True) m = MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernel=k, initx="PCA_concat", initz='permute', **kw) m['.*noise'] = [Y.var() / 40. for Y in Ylist] if optimize: print "Optimizing Model:" m.optimize(messages=verbose, max_iters=8e3) if plot: m.X.plot("MRD Latent Space 1D") m.plot_scales("MRD Scales") return m
def mrd_simulation(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, plot_sim) # Ylist = [Ylist[0]] k = kern.Linear(Q, ARD=True) m = MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernel=k, initx="PCA_concat", initz='permute', **kw) m['.*noise'] = [Y.var() / 40. for Y in Ylist] if optimize: print("Optimizing Model:") m.optimize(messages=verbose, max_iters=8e3) if plot: m.X.plot("MRD Latent Space 1D") m.plot_scales("MRD Scales") return m
def mrd_simulation_missing_data(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_matern(D1, D2, D3, N, num_inducing, plot_sim) k = kern.Linear(Q, ARD=True) + kern.White(Q, variance=1e-4) inanlist = [] for Y in Ylist: inan = _np.random.binomial(1, .6, size=Y.shape).astype(bool) inanlist.append(inan) Y[inan] = _np.nan m = MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernel=k, inference_method=None, initx="random", initz='permute', **kw) if optimize: print("Optimizing Model:") m.optimize('bfgs', messages=verbose, max_iters=8e3, gtol=.1) if plot: m.X.plot("MRD Latent Space 1D") m.plot_scales() return m
def optimize(self, views, latent_dims=7, messages=True, max_iters=8e3, save_model=False): if (self.kernel): if (self.kernel == 'rbf'): print("Chosen kernel: RBF") print("Chosen lengthscale: " + self.lengthscale) k = kern.RBF(latent_dims, ARD=True, lengthscale=self.lengthscale) + kern.White( latent_dims, variance=1e-4) + GPy.kern.Bias(latent_dims) elif (self.kernel == 'linear'): print("Chosen kernel: Linear") k = kern.Linear(latent_dims, ARD=True) + kern.White( latent_dims, variance=1e-4) + GPy.kern.Bias(latent_dims) else: print("No kernel or chosen - using RBF with lengthscale 10...") k = kern.RBF(latent_dims, ARD=True, lengthscale=10) + kern.White( latent_dims, variance=1e-4) + GPy.kern.Bias(latent_dims) print("Number of inducing inputs: " + str(self.num_inducing)) m = MRD(views, input_dim=latent_dims, num_inducing=self.num_inducing, kernel=k, normalizer=False) print("Optimizing Model...") m.optimize(messages=True, max_iters=8e3) if (save_model): pickle.dump(m, open(save_model, "wb"), protocol=2) self.model = m
def mrd_simulation(optimize=True, verbose=True, plot=True, plot_sim=True, **kw): from GPy import kern from GPy.models import MRD from GPy.likelihoods import Gaussian D1, D2, D3, N, num_inducing, Q = 60, 20, 36, 60, 6, 5 _, _, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) likelihood_list = [Gaussian(x, normalize=True) for x in Ylist] k = kern.linear(Q, ARD=True) + kern.bias(Q, _np.exp(-2)) + kern.white(Q, _np.exp(-2)) m = MRD(likelihood_list, input_dim=Q, num_inducing=num_inducing, kernels=k, initx="", initz='permute', **kw) m.ensure_default_constraints() for i, bgplvm in enumerate(m.bgplvms): m['{}_noise'.format(i)] = bgplvm.likelihood.Y.var() / 500. if optimize: print "Optimizing Model:" m.optimize(messages=verbose, max_iters=8e3, gtol=.1) if plot: m.plot_X_1d("MRD Latent Space 1D") m.plot_scales("MRD Scales") return m