data, _ = simulator.gen(n, p) #data = np.random.uniform(0,1,(n, 2)) all_dat[i] = data #data2, tree2 = simulator2.gen(n, p) #all_dat2[i] = data2.ravel() #true_lik2.append(tree2.calculate_marg_log_likelihood(c=10)) print("Finish Simulating Data") ###### #D = 2 #N = 100 #X = np.random.multivariate_normal(mean=np.zeros(D), cov=np.eye(D), size=N).astype(np.float32) #print(X.shape) df = Inverse() lm = GaussianLikelihoodModel(sigma=np.eye(p), mu0=np.zeros(p), sigma0=np.eye(p)) print("Get initial likelihood") #df2 = Inverse() #lm2 = GaussianLikelihoodModel(sigma=np.eye(p), mu0=np.zeros(p), sigma0=np.eye(p)) #print("Get initial likelihood") ddt = DirichletDiffusionTree(df=df, likelihood_model=lm) #ddt2 = DirichletDiffusionTree(df=df2, likelihood_model=lm2) print("Initialize Dirichlet Diffusion Tree") tree_list = [] #tree_list2 = [] """""" for i in range(n_samples):
X = X[idx] y = y[idx] constraints = set() for constraint in interactor.current_interactions: a, b, c = constraint if a not in idx_map or b not in idx_map or c not in idx_map: continue constraints.add(tuple(map(lambda x: idx_map[x], constraint))) logging.info("Interactions: %s", constraints) logging.info("Interactions: %u", len(constraints)) N, D = X.shape df = Inverse(c=2) cov = np.cov(X.T) / 4.0 + np.eye(D) * 0.001 lm = GaussianLikelihoodModel(sigma=cov, sigma0=np.eye(D) / 2.0, mu0=X.mean(axis=0)).compile() model = DirichletDiffusionTree(df=df, likelihood_model=lm, constraints=constraints) sampler = MetropolisHastingsSampler(model, X) sampler.initialize_assignments() def iterate(iters): for i in tqdm(xrange(iters)): sampler.sample()
import logging logging.basicConfig(level=logging.INFO) import numpy as np from trees.util import plot_tree, plot_tree_2d from trees.ddt import DirichletDiffusionTree, Inverse, GaussianLikelihoodModel from trees.mcmc import MetropolisHastingsSampler from tqdm import tqdm if __name__ == "__main__": D = 2 N = 100 X = np.random.multivariate_normal(mean=np.zeros(D), cov=np.eye(D), size=N).astype(np.float32) df = Inverse(c=1) lm = GaussianLikelihoodModel(sigma=np.eye(D) / 4.0, mu0=np.zeros(D), sigma0=np.eye(D)) ddt = DirichletDiffusionTree(df=df, likelihood_model=lm) mh = MetropolisHastingsSampler(ddt, X) mh.initialize_assignments() for _ in tqdm(range(1000)): mh.sample() plt.figure() plt.plot(mh.likelihoods) #plt.figure() #plot_tree(mh.tree) #plt.figure()