Пример #1
0
    def __init__(self, fit_params=None, verbose=False):
        if fit_params is None or fit_params == 'mle':
            fit_params = lambda structure, data: to_mvn(*gn_params(structure, data, sparse=True))
        elif fit_params == 'ridge':
            fit_params = lambda structure, data: to_mvn(*gn_params(structure, data, sparse=True, l2_reg=0.1))
        elif callable(fit_params):
            fit_params = fit_params
        else:
            raise NotImplementedError('Only mle estimation is currently available')

        self.fit_params = fit_params
        self.verbose = verbose
variables = list(range(5))

gen_mean = np.zeros(len(variables))
gen_var = np.zeros(len(variables)) + 0.2
gen_weight = 2

diff_norm_mean = 0
diff_norm_cov = 0

for i, s in enumerate(seeds):
    print('Test {0}/{1}'.format(i + 1, len(seeds)))
    graph = random_dag(variables, rng=rng)

    beta = graph.T * gen_weight

    mvn = to_mvn(gen_mean, gen_var, beta, return_mvn=True)

    n_samples = 200
    sample_seed = rng.randint(0, 2**32 - 1)

    data_gn = sample_from_gn(graph, gen_mean, gen_var, beta, n_samples,
                             sample_seed)
    data_mvn = mvn.rvs(n_samples, sample_seed)

    mean_gn = np.mean(data_gn, axis=0)
    mean_mvn = np.mean(data_mvn, axis=0)

    cov_gn = np.cov(data_gn, rowvar=False)
    cov_mvn = np.cov(data_mvn, rowvar=False)

    mean_norm = norm(mean_mvn - mean_gn)
Пример #3
0
    return mean / graph.n_nodes


for i, s in enumerate(seeds):
    print('Test {0}/{1}'.format(i + 1, len(seeds)))
    graph = random_dag(variables, rng=rng)

    beta = graph.T * gen_weight

    sample_seed = rng.randint(0, 2**32-1)

    data_gn = sample_from_gn(graph, gen_mean, gen_var, beta, n_samples, sample_seed)

    mu, var, b = gn_params(graph, data_gn, sparse=True)
    mu, sigma = to_mvn(mu, var, b)

    b = b.A

    # print(beta)
    # print(b)

    mean_norm = norm(gen_mean - mu)
    var_norm = norm(gen_var - var)
    # noinspection PyTypeChecker
    beta_norm = norm(beta - b)
    sklearn_check = sklearn_fit(graph, b)

    total_mean += mean_norm
    total_cov += var_norm
    total_beta += beta_norm
Пример #4
0
def parameter_estimator(structure, data):
    return to_mvn(*gn_params_ridge(structure, data, sparse=True, l2_reg=0.1))