Accord.Tests.MachineLearning.KMeansTest.KMeansConstructorTest2 C# (CSharp) Method

KMeansConstructorTest2() private method

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

            // Declare some observations
            double[][] observations = 
            {
                new double[] { -5, -2, -1 },
                new double[] { -5, -5, -6 },
                new double[] {  2,  1,  1 },
                new double[] {  1,  1,  2 },
                new double[] {  1,  2,  2 },
                new double[] {  3,  1,  2 },
                new double[] { 11,  5,  4 },
                new double[] { 15,  5,  6 },
                new double[] { 10,  5,  6 },
            };

            double error, e;

            // Create a new algorithm
            KMeans kmeans = new KMeans(3);
            kmeans.Randomize(observations);

            // Save the first initialization
            double[][] initial = kmeans.Clusters.Centroids.MemberwiseClone();

            // Compute the first K-Means
            kmeans.Compute(observations, out error);

            // Create more K-Means algorithms 
            //  with the same initializations
            for (int i = 0; i < 1000; i++)
            {
                kmeans = new KMeans(3);
                kmeans.Clusters.Centroids = initial;
                kmeans.Compute(observations, out e);

                Assert.AreEqual(error, e);
            }

            // Create more K-Means algorithms 
            //  without the same initialization
            bool differ = false;
            for (int i = 0; i < 1000; i++)
            {
                kmeans = new KMeans(3);
                kmeans.Compute(observations, out e);

                if (error != e)
                    differ = true;
            }

            Assert.IsTrue(differ);
        }