Accord.Tests.MachineLearning.GaussianMixtureModelTest.GaussianMixtureModelConstructorTest C# (CSharp) Method

GaussianMixtureModelConstructorTest() private method

private GaussianMixtureModelConstructorTest ( ) : void
return void
        public void GaussianMixtureModelConstructorTest()
        {
            Accord.Math.Tools.SetupGenerator(0);

            // Test Samples
            double[][] samples =
            {
                new double[] { 0, 1 },
                new double[] { 1, 2 }, 
                new double[] { 1, 1 },
                new double[] { 0, 7 },
                new double[] { 1, 1 },
                new double[] { 6, 2 },
                new double[] { 6, 5 },
                new double[] { 5, 1 },
                new double[] { 7, 1 },
                new double[] { 5, 1 }
            };

            double[] sample = samples[0];


            // Create a new Gaussian Mixture Model with 2 components
            GaussianMixtureModel gmm = new GaussianMixtureModel(2);

            // Compute the model (estimate)
            double ll = gmm.Compute(samples, 0.0001);
            Assert.AreEqual(-35.930732550698494, ll, 1e-10);

            Assert.AreEqual(2, gmm.Gaussians.Count);

            Assert.IsTrue(gmm.Gaussians.Means[0].IsEqual(new[] { 5.8, 2.0 }, 1e-3));
            Assert.IsTrue(gmm.Gaussians.Means[1].IsEqual(new[] { 0.6, 2.4 }, 1e-3));


            int[] c = samples.Apply(gmm.Clusters.Nearest);

            for (int i = 0; i < samples.Length; i++)
            {
                double[] responses;
                int e = gmm.Gaussians.Nearest(samples[i], out responses);
                int a = responses.ArgMax();

                Assert.AreEqual(a, e);
                Assert.AreEqual(c[i], (i < 5) ? 1 : 0);
            }
        }