#get and print estimated means and covariances est_mean1=est_gmm.get_nth_mean(0) est_mean2=est_gmm.get_nth_mean(1) est_mean3=est_gmm.get_nth_mean(2) est_cov1=est_gmm.get_nth_cov(0) est_cov2=est_gmm.get_nth_cov(1) est_cov3=est_gmm.get_nth_cov(2) est_coef=est_gmm.get_coef() print est_mean1 print est_cov1 print est_mean2 print est_cov2 print est_mean3 print est_cov3 print est_coef #plot real GMM, data and estimated GMM min_gen=min(min(generated)) max_gen=max(max(generated)) plot_real=empty(0) plot_est=empty(0) for i in arange(min_gen, max_gen, 0.001): plot_real=append(plot_real, array([exp(real_gmm.cluster(array([i]))[3])])) plot_est=append(plot_est, array([exp(est_gmm.cluster(array([i]))[3])])) real_plot=plot(arange(min_gen, max_gen, 0.001), plot_real, "b") est_plot=plot(arange(min_gen, max_gen, 0.001), plot_est, "r") real_hist=hist(generated.transpose(), bins=50, normed=True, fc="gray") legend(("Real GMM", "Estimated GMM")) connect('key_press_event', util.quit) show()
print est_em_gmm.train_em(min_cov, max_em_iter, min_change) #plot real GMM, data and both estimated GMMs min_x_gen = min(min(generated[[0]])) - 0.1 max_x_gen = max(max(generated[[0]])) + 0.1 min_y_gen = min(min(generated[[1]])) - 0.1 max_y_gen = max(max(generated[[1]])) + 0.1 plot_real = empty(0) plot_est_smem = empty(0) plot_est_em = empty(0) for i in arange(min_x_gen, max_x_gen, 0.05): for j in arange(min_y_gen, max_y_gen, 0.05): plot_real = append(plot_real, array([exp(real_gmm.cluster(array([i, j]))[3])])) plot_est_smem = append( plot_est_smem, array([exp(est_smem_gmm.cluster(array([i, j]))[3])])) plot_est_em = append( plot_est_em, array([exp(est_em_gmm.cluster(array([i, j]))[3])])) plot_real = reshape(plot_real, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) plot_est_smem = reshape(plot_est_smem, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) plot_est_em = reshape(plot_est_em, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0]))
#train GMM using SMEM and print log-likelihood est_smem_gmm = GMM(3) est_smem_gmm.train(feat_train) print est_smem_gmm.train_smem(max_iter, max_cand, min_cov, max_em_iter, min_change) #train GMM using EM and print log-likelihood est_em_gmm = GMM(3) est_em_gmm.train(feat_train) print est_em_gmm.train_em(min_cov, max_em_iter, min_change) #plot real GMM, data and both estimated GMMs min_gen = min(min(generated)) max_gen = max(max(generated)) plot_real = empty(0) plot_est_smem = empty(0) plot_est_em = empty(0) for i in arange(min_gen, max_gen, 0.001): plot_real = append(plot_real, array([exp(real_gmm.cluster(array([i]))[3])])) plot_est_smem = append(plot_est_smem, array([exp(est_smem_gmm.cluster(array([i]))[3])])) plot_est_em = append(plot_est_em, array([exp(est_em_gmm.cluster(array([i]))[3])])) real_plot = plot(arange(min_gen, max_gen, 0.001), plot_real, "b") est_em_plot = plot(arange(min_gen, max_gen, 0.001), plot_est_em, "g") est_smem_plot = plot(arange(min_gen, max_gen, 0.001), plot_est_smem, "r") real_hist = hist(generated.transpose(), bins=50, normed=True, fc="gray") legend(("Real GMM", "Estimated EM GMM", "Estimated SMEM GMM")) connect('key_press_event', util.quit) show()
print est_em_gmm.train_em(min_cov, max_em_iter, min_change) #plot real GMM, data and both estimated GMMs min_x_gen=min(min(generated[[0]]))-0.1 max_x_gen=max(max(generated[[0]]))+0.1 min_y_gen=min(min(generated[[1]]))-0.1 max_y_gen=max(max(generated[[1]]))+0.1 plot_real=empty(0) plot_est_smem=empty(0) plot_est_em=empty(0) for i in arange(min_x_gen, max_x_gen, 0.05): for j in arange(min_y_gen, max_y_gen, 0.05): plot_real=append(plot_real, array([exp(real_gmm.cluster(array([i, j]))[3])])) plot_est_smem=append(plot_est_smem, array([exp(est_smem_gmm.cluster(array([i, j]))[3])])) plot_est_em=append(plot_est_em, array([exp(est_em_gmm.cluster(array([i, j]))[3])])) plot_real=reshape(plot_real, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) plot_est_smem=reshape(plot_est_smem, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) plot_est_em=reshape(plot_est_em, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) real_plot=contour(arange(min_x_gen, max_x_gen, 0.05), arange(min_y_gen, max_y_gen, 0.05), plot_real.transpose(), colors="b") est_smem_plot=contour(arange(min_x_gen, max_x_gen, 0.05), arange(min_y_gen, max_y_gen, 0.05), plot_est_smem.transpose(), colors="r") est_em_plot=contour(arange(min_x_gen, max_x_gen, 0.05), arange(min_y_gen, max_y_gen, 0.05), plot_est_em.transpose(), colors="g") real_scatter=scatter(generated[[0]], generated[[1]], c="gray") legend((real_plot.collections[0], est_em_plot.collections[0], est_smem_plot.collections[0]), ("Real GMM", "Estimated EM GMM", "Estimated SMEM GMM")) connect('key_press_event', util.quit) show()
est_mean1 = est_gmm.get_nth_mean(0) est_mean2 = est_gmm.get_nth_mean(1) est_mean3 = est_gmm.get_nth_mean(2) est_cov1 = est_gmm.get_nth_cov(0) est_cov2 = est_gmm.get_nth_cov(1) est_cov3 = est_gmm.get_nth_cov(2) est_coef = est_gmm.get_coef() print est_mean1 print est_cov1 print est_mean2 print est_cov2 print est_mean3 print est_cov3 print est_coef #plot real GMM, data and estimated GMM min_gen = min(min(generated)) max_gen = max(max(generated)) plot_real = empty(0) plot_est = empty(0) for i in arange(min_gen, max_gen, 0.001): plot_real = append(plot_real, array([exp(real_gmm.cluster(array([i]))[3])])) plot_est = append(plot_est, array([exp(est_gmm.cluster(array([i]))[3])])) real_plot = plot(arange(min_gen, max_gen, 0.001), plot_real, "b") est_plot = plot(arange(min_gen, max_gen, 0.001), plot_est, "r") real_hist = hist(generated.transpose(), bins=50, normed=True, fc="gray") legend(("Real GMM", "Estimated GMM")) connect('key_press_event', util.quit) show()
print est_cov2 print est_coef #plot real GMM, data and estimated GMM min_x_gen = min(min(generated[[0]])) - 0.1 max_x_gen = max(max(generated[[0]])) + 0.1 min_y_gen = min(min(generated[[1]])) - 0.1 max_y_gen = max(max(generated[[1]])) + 0.1 plot_real = empty(0) plot_est = empty(0) for i in arange(min_x_gen, max_x_gen, 0.05): for j in arange(min_y_gen, max_y_gen, 0.05): plot_real = append(plot_real, array([exp(real_gmm.cluster(array([i, j]))[2])])) plot_est = append(plot_est, array([exp(est_gmm.cluster(array([i, j]))[2])])) plot_real = reshape(plot_real, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) plot_est = reshape(plot_est, (arange(min_x_gen, max_x_gen, 0.05).shape[0], arange(min_y_gen, max_y_gen, 0.05).shape[0])) real_plot = contour(arange(min_x_gen, max_x_gen, 0.05), arange(min_y_gen, max_y_gen, 0.05), plot_real.transpose(), colors="b") est_plot = contour(arange(min_x_gen, max_x_gen, 0.05), arange(min_y_gen, max_y_gen, 0.05), plot_est.transpose(),