Accord.Tests.MachineLearning.MeanShiftTest.WeightedMeanShiftConstructorTest C# (CSharp) Method

WeightedMeanShiftConstructorTest() private method

private WeightedMeanShiftConstructorTest ( ) : void
return void
        public void WeightedMeanShiftConstructorTest()
        {
            MeanShift ms1, ms2, ms3;

            Accord.Math.Tools.SetupGenerator(0);

            double[][] samples1 =
            {
                new double[] { 0, 1 },
                new double[] { 1, 2 }, 
                new double[] { 1, 1 },
                new double[] { 0, 1 },
                new double[] { 1, 1 },
                new double[] { 6, 2 },
                new double[] { 6, 5 },
                new double[] { 5, 1 },
                new double[] { 7, 1 },
                new double[] { 5, 1 }
            };

            int[] weights1 = Vector.Ones<int>(samples1.Length);

            ms1 = new MeanShift(2, new GaussianKernel(dimension: 2), 2.0);
            ms1.Compute(samples1);


            Accord.Math.Tools.SetupGenerator(0);

            double[][] samples2 =
            {
                new double[] { 0, 1 },
                new double[] { 1, 2 }, 
                new double[] { 1, 1 },
                new double[] { 0, 1 },
                new double[] { 6, 2 },
                new double[] { 6, 5 },
                new double[] { 5, 1 },
                new double[] { 7, 1 },
            };

            int[] weights = { 1, 1, 2, 1, 1, 1, 2, 1 };

            ms2 = new MeanShift(2, new GaussianKernel(dimension: 2), 2.0);
            ms2.Compute(samples2, weights);

            ms3 = new MeanShift(2, new GaussianKernel(dimension: 2), 2.0);
            ms3.Compute(samples2);


            int[] labels1 = ms1.Clusters.Nearest(samples1);
            int[] labels2 = ms2.Clusters.Nearest(samples1);
            int[] labels3 = ms3.Clusters.Nearest(samples1);

            Assert.IsTrue(Matrix.IsEqual(labels1, labels2));

            Assert.IsTrue(Matrix.IsEqual(ms1.Clusters.Modes, ms2.Clusters.Modes, 1e-3));
            Assert.IsFalse(Matrix.IsEqual(ms1.Clusters.Modes, ms3.Clusters.Modes, 1e-2));
            Assert.IsFalse(Matrix.IsEqual(ms2.Clusters.Modes, ms3.Clusters.Modes, 1e-2));

            Assert.IsTrue(Matrix.IsEqual(ms1.Clusters.Proportions, ms2.Clusters.Proportions));
            Assert.IsTrue(Matrix.IsEqual(ms1.Clusters.Proportions, ms3.Clusters.Proportions));

            Assert.AreEqual(0.5, ms1.Clusters.Proportions[0]);
            Assert.AreEqual(0.5, ms1.Clusters.Proportions[1]);
        }