예제 #1
0
파일: dna_lds.py 프로젝트: fivejjs/pgmult
def fit_lds_model(Xs, Xtest, D, N_samples=100):
    model = MultinomialLDS(K, D,
        init_dynamics_distn=GaussianFixed(mu=np.zeros(D), sigma=1*np.eye(D)),
        dynamics_distn=AutoRegression(nu_0=D+1,S_0=1*np.eye(D),M_0=np.zeros((D,D)),K_0=1*np.eye(D)),
        sigma_C=0.01
        )

    for X in Xs:
        model.add_data(X)

    model.resample_parameters()

    init_results = (0, model, model.log_likelihood(),
                    model.heldout_log_likelihood(Xtest, M=1),
                    model.predictive_log_likelihood(Xtest, M=1000))

    def resample():
        tic = time.time()
        model.resample_model()
        toc = time.time() - tic

        return toc, None, model.log_likelihood(), \
            model.heldout_log_likelihood(Xtest, M=1), \
            model.predictive_log_likelihood(Xtest, M=1000)

    times, samples, lls, test_lls, pred_lls = \
        map(np.array, zip(*([init_results] + [resample() for _ in progprint_xrange(N_samples)])))
    timestamps = np.cumsum(times)

    return Results(lls, test_lls, pred_lls, samples, timestamps)
예제 #2
0
def fit_lds_model(Xs, Xtest, D, N_samples=100):
    model = MultinomialLDS(K,
                           D,
                           init_dynamics_distn=GaussianFixed(mu=np.zeros(D),
                                                             sigma=1 *
                                                             np.eye(D)),
                           dynamics_distn=AutoRegression(nu_0=D + 1,
                                                         S_0=1 * np.eye(D),
                                                         M_0=np.zeros((D, D)),
                                                         K_0=1 * np.eye(D)),
                           sigma_C=0.01)

    for X in Xs:
        model.add_data(X)

    model.resample_parameters()

    init_results = (0, model, model.log_likelihood(),
                    model.heldout_log_likelihood(Xtest, M=1),
                    model.predictive_log_likelihood(Xtest, M=1000))

    def resample():
        tic = time.time()
        model.resample_model()
        toc = time.time() - tic

        return toc, None, model.log_likelihood(), \
            model.heldout_log_likelihood(Xtest, M=1), \
            model.predictive_log_likelihood(Xtest, M=1000)

    times, samples, lls, test_lls, pred_lls = \
        map(np.array, zip(*([init_results] + [resample() for _ in progprint_xrange(N_samples)])))
    timestamps = np.cumsum(times)

    return Results(lls, test_lls, pred_lls, samples, timestamps)
예제 #3
0
파일: ap_lds.py 프로젝트: yinsenm/pgmult
def fit_lds_model(Xs, Xtest, D, N_samples=100):
    Nx = len(Xs)
    assert len(Xtest) == Nx

    model = MultinomialLDS(K,
                           D,
                           init_dynamics_distn=GaussianFixed(mu=np.zeros(D),
                                                             sigma=1 *
                                                             np.eye(D)),
                           dynamics_distn=AutoRegression(nu_0=D + 1,
                                                         S_0=1 * np.eye(D),
                                                         M_0=np.zeros((D, D)),
                                                         K_0=1 * np.eye(D)),
                           sigma_C=1.)

    for X in Xs:
        model.add_data(X)

    model.resample_parameters()

    compute_pred_ll = lambda: sum([
        model.predictive_log_likelihood(Xt, data_index=i, M=10)[0]
        for i, Xt in enumerate(Xtest)
    ])

    init_results = (
        0,
        None,
        model.log_likelihood(),
        # model.heldout_log_likelihood(Xtest, M=1),
        np.nan,
        compute_pred_ll())

    def resample():
        tic = time.time()
        model.resample_model()
        toc = time.time() - tic

        return toc, None, model.log_likelihood(), \
            np.nan,\
            compute_pred_ll()

    times, samples, lls, test_lls, pred_lls = \
        list(map(np.array, list(zip(*([init_results] +
            [resample() for _ in progprint_xrange(N_samples, perline=5)])))))
    timestamps = np.cumsum(times)

    return Results(lls, test_lls, pred_lls, samples, timestamps)
예제 #4
0
파일: ap_lds.py 프로젝트: fivejjs/pgmult
def fit_lds_model(Xs, Xtest, D, N_samples=100):
    Nx = len(Xs)
    assert len(Xtest) == Nx

    model = MultinomialLDS(K, D,
        init_dynamics_distn=GaussianFixed(mu=np.zeros(D), sigma=1*np.eye(D)),
        dynamics_distn=AutoRegression(nu_0=D+1,S_0=1*np.eye(D),M_0=np.zeros((D,D)),K_0=1*np.eye(D)),
        sigma_C=1.
        )

    for X in Xs:
        model.add_data(X)

    model.resample_parameters()

    compute_pred_ll = lambda: sum([model.predictive_log_likelihood(Xt, data_index=i, M=10)[0]
                                   for i,Xt in enumerate(Xtest)])

    init_results = (0, None, model.log_likelihood(),
                    # model.heldout_log_likelihood(Xtest, M=1),
                    np.nan,
                    compute_pred_ll())

    def resample():
        tic = time.time()
        model.resample_model()
        toc = time.time() - tic

        return toc, None, model.log_likelihood(), \
            np.nan,\
            compute_pred_ll()

    times, samples, lls, test_lls, pred_lls = \
        map(np.array, zip(*([init_results] +
            [resample() for _ in progprint_xrange(N_samples, perline=5)])))
    timestamps = np.cumsum(times)

    return Results(lls, test_lls, pred_lls, samples, timestamps)