Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
    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