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

GaussianMixtureModelTest5() private method

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

            MemoryStream stream = new MemoryStream(Resources.CircleWithWeights);
            ExcelReader reader = new ExcelReader(stream, xlsx: false);

            DataTable table = reader.GetWorksheet("Sheet1");

            double[,] matrix = table.ToMatrix();

            double[][] points = matrix.Submatrix(null, 0, 1).ToJagged();
            double[] weights = matrix.GetColumn(2);

            GaussianMixtureModel gmm = new GaussianMixtureModel(2);
            gmm.Initializations = 1;

            gmm.Compute(points, new GaussianMixtureModelOptions()
            {
                Weights = weights
            });

            int a = 0;
            int b = 1;
            double tol = 1e-3;

            if ((-0.407859903454185).IsRelativelyEqual(gmm.Gaussians[1].Mean[0], tol))
            {
                a = 1;
                b = 0;
            }

            Assert.AreEqual(-0.407859903454185, gmm.Gaussians[a].Mean[0], tol);
            Assert.AreEqual(-0.053911705279706859, gmm.Gaussians[a].Mean[1], tol);

            Assert.AreEqual(0.39380877640250328, gmm.Gaussians[b].Mean[0], tol);
            Assert.AreEqual(0.047186154880776772, gmm.Gaussians[b].Mean[1], tol);

            Assert.AreEqual(1, gmm.Gaussians[0].Proportion + gmm.Gaussians[1].Proportion, 1e-15);

            Assert.IsFalse(gmm.Gaussians[0].Mean.HasNaN());
            Assert.IsFalse(gmm.Gaussians[1].Mean.HasNaN());
        }