def test_2D_cov(): s1 = 1.3 s2 = 1.0 alpha = 0.2 cov = convert_2D_cov(s1, s2, alpha) assert_array_almost_equal([s1, s2, alpha], convert_2D_cov(cov))
#------------------------------------------------------------ # Set up the dataset # We'll use scikit-learn's Gaussian Mixture Model to sample # data from a mixture of Gaussians. The usual way of using # this involves fitting the mixture to data: we'll see that # below. Here we'll set the internal means, covariances, # and weights by-hand. # we'll define clusters as (mu, sigma1, sigma2, alpha, frac) clusters = [((50, 50), 20, 20, 0, 0.1), ((40, 40), 10, 10, np.pi / 6, 0.6), ((80, 80), 5, 5, np.pi / 3, 0.2), ((60, 60), 30, 30, 0, 0.1)] gmm_input = GMM(len(clusters), covariance_type='full') gmm_input.means_ = np.array([c[0] for c in clusters]) gmm_input.covars_ = np.array([convert_2D_cov(*c[1:4]) for c in clusters]) gmm_input.weights_ = np.array([c[4] for c in clusters]) gmm_input.weights_ /= gmm_input.weights_.sum() #------------------------------------------------------------ # Compute and plot the results fig = plt.figure(figsize=(5, 5)) fig.subplots_adjust(left=0.11, right=0.9, bottom=0.11, top=0.9, hspace=0, wspace=0) ax_list = [fig.add_subplot(s) for s in [221, 223, 224]] ax_list.append(fig.add_axes([0.62, 0.62, 0.28, 0.28]))
# Set up the dataset # We'll use scikit-learn's Gaussian Mixture Model to sample # data from a mixture of Gaussians. The usual way of using # this involves fitting the mixture to data: we'll see that # below. Here we'll set the internal means, covariances, # and weights by-hand. # we'll define clusters as (mu, sigma1, sigma2, alpha, frac) clusters = [((50, 50), 20, 20, 0, 0.1), ((40, 40), 10, 10, np.pi / 6, 0.6), ((80, 80), 5, 5, np.pi / 3, 0.2), ((60, 60), 30, 30, 0, 0.1)] gmm_input = GMM(len(clusters), covariance_type='full') gmm_input.means_ = np.array([c[0] for c in clusters]) gmm_input.covars_ = np.array([convert_2D_cov(*c[1:4]) for c in clusters]) gmm_input.weights_ = np.array([c[4] for c in clusters]) gmm_input.weights_ /= gmm_input.weights_.sum() #------------------------------------------------------------ # Compute and plot the results fig = plt.figure(figsize=(5, 5)) fig.subplots_adjust(left=0.11, right=0.9, bottom=0.11, top=0.9, hspace=0, wspace=0) ax_list = [fig.add_subplot(s) for s in [221, 223, 224]] ax_list.append(fig.add_axes([0.62, 0.62, 0.28, 0.28])) linestyles = ['-', '--', ':'] grid = np.linspace(-5, 105, 70) Xgrid = np.array(np.meshgrid(grid, grid))