Пример #1
0
    x = xs[0].copy()
    x[z[:,1]] = xs[1][z[:,1]]
    x[z[:,2]] = xs[2][z[:,2]]

    z_ind = np.zeros(n, dtype=int)
    z_ind[z[:,1]] = 1
    z_ind[z[:,2]] = 2

    # Run SA
    # Note that some runs for small sample sizes run have issues with
    # singular covariance matrices, so I simply try a couple times
    # if there is an issue.

    res_sa, _ = sim_anneal(
        x, init_mu, init_sigma, init_mix, num_iter=iter_num,
        temp_func=lambda i: max(1e-4, 100*.992**i))

    # Run EM
    res_em, _ = em_alg(
    x, init_mu, init_sigma, init_mix, num_iter=iter_num)

    # Run DA
    res_da, _ = em_alg(
        x, init_mu, init_sigma, init_mix, num_iter=iter_num,
        beta_func=lambda i: 1.-np.exp(-(i+1)/5))
    
    distances = np.array([cluster_dist(mu, res_sa[0]),
                          cluster_dist(mu, res_em[0]),
                          cluster_dist(mu, res_da[0])])
    # Store results
Пример #2
0
                                        init_mix,
                                        num_iter=250)

res_da, (logliks_da,
         times_da) = em_alg(x,
                            init_mu,
                            init_sigma,
                            init_mix,
                            num_iter=250,
                            beta_func=lambda i: 1. - np.exp(-(i + 1) / 5))

res_sa, (logliks_sa,
         times_sa) = sim_anneal(x,
                                init_mu,
                                init_sigma,
                                init_mix,
                                num_iter=250,
                                seed=29624,
                                temp_func=lambda i: max(1e-4, 100 * .992**i))

# Save results
colnames = \
    'logliks_em, times_em, logliks_da, times_da, logliks_sa, times_sa'
np.savetxt('./intermediate_data/singlerun_results.csv',
           np.column_stack((logliks_em, times_em, logliks_da, times_da,
                            logliks_sa['best'], times_sa)),
           header=colnames,
           delimiter=',',
           comments='')

np.savetxt('./intermediate_data/sa_singlerun.csv',
Пример #3
0
fig.savefig('./sim_data.pdf')

# Estimate
init_mu = np.array([[0., 0.], [1., 1.], [2., 2.]])
init_sigma = [np.identity(2) for i in range(3)]
init_mix = np.array([1., 1., 1.])/3

res_em, (logliks_em, times_em) = em_alg(
    x, init_mu, init_sigma, init_mix, num_iter=250)

res_da, (logliks_da, times_da) = em_alg(
    x, init_mu, init_sigma, init_mix, num_iter=250,
    beta_func=lambda i: 1.-np.exp(-(i+1)/5))

res_sa, (logliks_sa, times_sa) = sim_anneal(
    x, init_mu, init_sigma, init_mix, num_iter=250, seed=29624,
    temp_func=lambda i: max(1e-4, 100*.992**i))

# Save results
colnames = \
    'logliks_em, times_em, logliks_da, times_da, logliks_sa, times_sa'
np.savetxt(
    './intermediate_data/singlerun_results.csv',
    np.column_stack((logliks_em, times_em,
                     logliks_da, times_da,
                     logliks_sa['best'], times_sa)),
    header=colnames, delimiter=',', comments='')

np.savetxt('./intermediate_data/sa_singlerun.csv',
    np.column_stack((logliks_sa['curr'], logliks_sa['best'])),
    header='logliks_curr, logliks_best', delimiter=',', comments='')
Пример #4
0
        x = xs[0].copy()
        x[z[:,1]] = xs[1][z[:,1]]
        x[z[:,2]] = xs[2][z[:,2]]

        z_ind = np.zeros(n, dtype=int)
        z_ind[z[:,1]] = 1
        z_ind[z[:,2]] = 2

        # Run SA
        # Note that some runs for small sample sizes run have issues with
        # singular covariance matrices, so I simply try a couple times
        # if there is an issue.
        try:
            _, (loglik_sa, time_sa) = sim_anneal(
                x, init_mu, init_sigma, init_mix, num_iter=iter_num,
                temp_func=lambda i: max(1e-4, 100*.992**i))
        except LinAlgError:
            try:
                _, (loglik_sa, time_sa) = sim_anneal(
                    x, init_mu, init_sigma, init_mix, num_iter=iter_num,
                    temp_func=lambda i: max(1e-4, 100*.992**i))
            except LinAlgError:
               _, (loglik_sa, time_sa) = sim_anneal(
                   x, init_mu, init_sigma, init_mix, num_iter=iter_num,
                   temp_func=lambda i: max(1e-4, 100*.992**i))

        # Run EM
        _, (logliks_em, times_em) = em_alg(
        x, init_mu, init_sigma, init_mix, num_iter=iter_num)