def main(): # define the MCMC target distribution # possible distributions are in kameleon_mcmc.distribution: Banana, Flower, Ring # distribution = Banana(dimension=2, bananicity=0.03, V=100.0) distribution = Ring() # create instance of kameleon sampler that learns the length scale # can be replaced by any other sampler in kameleon_mcmc.mcmc.samplers kernel = GaussianKernel(sigma=5) mcmc_sampler = KameleonWindowLearnScale(distribution, kernel, stop_adapt=inf, nu2=0.05) # mcmc chain and its parameters start = asarray([0,-3]) mcmc_params = MCMCParams(start=start, num_iterations=30000) chain = MCMCChain(mcmc_sampler, mcmc_params) # plot every iteration and print some statistics chain.append_mcmc_output(PlottingOutput(distribution, plot_from=2000)) chain.append_mcmc_output(StatisticsOutput()) # run cmcm chain.run() # print empirical quantiles burnin=10000 print distribution.emp_quantiles(chain.samples[burnin:]) Visualise.visualise_distribution(distribution, chain.samples)
def main(): dist=Ring(dimension=50) X=dist.sample(10000).samples #print X[:,2:dist.dimension] print dist.emp_quantiles(X) dist2=Banana(dimension=50) X2=dist2.sample(10000).samples print dist2.emp_quantiles(X2)
def test_predict(self): # define some easy training data and predict predictive distribution circle1 = Ring(variance=1, radius=3) circle2 = Ring(variance=1, radius=10) n = 100 X = circle1.sample(n / 2).samples X = vstack((X, circle2.sample(n / 2).samples)) y = ones(n) y[:n / 2] = -1.0 # plot(X[:n/2,0], X[:n/2,1], 'ro') # hold(True) # plot(X[n/2:,0], X[n/2:,1], 'bo') # hold(False) # show() covariance = SquaredExponentialCovariance(1, 1) likelihood = LogitLikelihood() gp = GaussianProcess(y, X, covariance, likelihood) # predict on mesh n_test = 20 P = linspace(X[:, 0].min() - 1, X[:, 1].max() + 1, n_test) Q = linspace(X[:, 1].min() - 1, X[:, 1].max() + 1, n_test) X_test = asarray(list(itertools.product(P, Q))) # Y_test = exp(LaplaceApproximation(gp).predict(X_test).reshape(n_test, n_test)) Y_train = exp(LaplaceApproximation(gp).predict(X)) print Y_train print Y_train>0.5 print y
from matplotlib.pyplot import axis, savefig from numpy import linspace from kameleon_mcmc.distribution.Banana import Banana from kameleon_mcmc.distribution.Flower import Flower from kameleon_mcmc.distribution.Ring import Ring from kameleon_mcmc.tools.Visualise import Visualise if __name__ == '__main__': distributions = [Ring(), Banana(), Flower()] for d in distributions: Xs, Ys = d.get_plotting_bounds() resolution = 250 Xs = linspace(Xs[0], Xs[1], resolution) Ys = linspace(Ys[0], Ys[1], resolution) Visualise.visualise_distribution(d, Xs=Xs, Ys=Ys) axis("Off") savefig("heatmap_" + d.__class__.__name__ + ".eps", bbox_inches='tight')
)[-1] + " /nfs/home1/ucabhst/kameleon_experiments 3 5000 2000" exit() experiment_dir_base = str(sys.argv[1]) n = int(str(sys.argv[2])) num_iterations = int(str(sys.argv[3])) burnin = int(str(sys.argv[4])) # loop over parameters here experiment_dir = experiment_dir_base + os.sep + str( os.path.abspath(sys.argv[0])).split(os.sep)[-1].split(".")[0] + os.sep print "running experiments", n, "times at base", experiment_dir for i in range(n): distribution = Ring() mcmc_samplers = [] kernel = GaussianKernel(sigma=1) # mcmc_samplers.append(KameleonWindow(distribution, kernel)) mcmc_samplers.append(KameleonWindowLearnScale(distribution, kernel)) mean_est = array([-2.0, -2.0]) cov_est = 0.05 * eye(2) # mcmc_samplers.append(AdaptiveMetropolis(distribution, mean_est=mean_est, cov_est=cov_est)) mcmc_samplers.append( AdaptiveMetropolisLearnScale(distribution, mean_est=mean_est, cov_est=cov_est))