Esempio n. 1
0
def test_initialize_stdnormal():

    model = GMM(num_comp=1, x_dim=x_dim)
    model.initialize()

    assert (model.pi == 1)
    assert_allclose(model.mu, np.zeros((1, x_dim)))
    assert_allclose(model.Lambda[0], np.eye(x_dim))
Esempio n. 2
0
def test_initialize_kmeans():

    model1 = create_pdf()
    x = model1.sample(num_samples=num_samples_init)

    model2 = GMM(num_comp=4, x_dim=x_dim)
    model2.initialize(x)

    print(model1.mu)
    print(model2.mu[[2, 3, 1, 0]])
Esempio n. 3
0
def test_fit_kmeans():

    model1 = create_pdf()
    model1.initialize()

    x = model1.sample(num_samples_train)
    x_val = model1.sample(num_samples)

    model2 = GMM(num_comp=4, x_dim=x_dim)
    model2.initialize(x)
    elbo = model2.fit(x, x_val=x_val)

    model2.plot2D(feat_idx=[0, 1], num_sigmas=1)
    plt.savefig(output_dir + '/plot_fit_kmeans_init_D01.pdf')
    plt.close()
    model2.plot2D(feat_idx=[0, 2], num_sigmas=1)
    plt.savefig(output_dir + '/plot_fit_kmeans_init_D02.pdf')
    plt.close()

    plt.figure()
    plt.plot(np.repeat(model1.elbo(x) / x.shape[0], len(elbo[1])), 'b')
    plt.plot(np.repeat(model1.elbo(x_val) / x.shape[0], len(elbo[1])), 'b--')
    plt.plot(elbo[1], 'r')
    plt.plot(elbo[3], 'r--')
    plt.savefig('./tests/data_out/gmm_fit_kmeans_init_elbo.pdf')
    plt.close()
Esempio n. 4
0
def test_initialize():

    model1 = create_pdf()
    model1.initialize()

    model2 = GMM(num_comp=model1.num_comp,
                 pi=model1.pi,
                 eta=model1.eta,
                 x_dim=model1.x_dim)
    assert_allclose(model1.eta, model2.eta)
    model2.initialize()

    model3 = GMM(num_comp=model2.num_comp,
                 pi=model2.pi,
                 mu=model2.mu,
                 Lambda=model2.Lambda,
                 x_dim=model1.x_dim)
    assert_allclose(model1.eta, model3.eta, atol=1e-5)
    model3.initialize()

    assert_allclose(model1.eta, model2.eta, atol=1e-5)
    assert_allclose(model1.eta, model3.eta, atol=1e-5)

    assert_allclose(model1.A, model2.A)
    assert_allclose(model1.A, model3.A)

    assert_allclose(model1.mu, model2.mu, atol=1e-10)
    assert_allclose(model1.mu, model3.mu, atol=1e-10)

    assert_allclose(model1.Lambda, model2.Lambda)
    assert_allclose(model1.Lambda, model3.Lambda)
Esempio n. 5
0
def create_diag_pdf():

    model_diag = GMMDiagCov(num_comp=len(pi1),
                            pi=pi1,
                            mu=mu1,
                            Lambda=1 / S1,
                            x_dim=x_dim)
    model = GMM(num_comp=len(pi1), pi=pi1, mu=mu1, Lambda=L1dc, x_dim=x_dim)
    return model, model_diag
Esempio n. 6
0
def test_diag_initialize():

    model1, model1_diag = create_diag_pdf()
    model1.initialize()
    model1_diag.initialize()

    model2 = GMM(num_comp=model1.num_comp,
                 pi=model1.pi,
                 eta=model1.eta,
                 x_dim=model1.x_dim)
    model2.initialize()

    assert_allclose(model1.compute_A_std(model1.mu, model1.Lambda),
                    model1_diag.A)
    assert_allclose(model1.compute_A_nat(model1.eta), model1_diag.A)
    assert_allclose(model1.A, model1_diag.A)
    assert_allclose(model2.A, model1_diag.A)

    assert_allclose(model1.mu, model1_diag.mu)
    assert_allclose(model2.mu, model1_diag.mu)

    for k in xrange(model1.num_comp):
        assert_allclose(model1.Lambda[k], np.diag(model1_diag.Lambda[k]))
        assert_allclose(model2.Lambda[k], np.diag(model1_diag.Lambda[k]))
Esempio n. 7
0
def create_pdf():

    model = GMM(num_comp=len(pi1), pi=pi1, mu=mu1, Lambda=L1fc, x_dim=x_dim)
    return model