Accord.Tests.Statistics.PrincipalComponentAnalysisTest.correlation_new_interface C# (CSharp) Method

correlation_new_interface() private method

private correlation_new_interface ( ) : void
return void
        public void correlation_new_interface()
        {
            double[] mean = Measures.Mean(data, dimension: 0);
            double[] stdDev = Measures.StandardDeviation(data);
            double[][] cov = Measures.Correlation(data.ToJagged());

            var actual = PrincipalComponentAnalysis.FromCorrelationMatrix(mean, stdDev, cov.ToMatrix());
            var expected = new PrincipalComponentAnalysis(PrincipalComponentMethod.CorrelationMatrix)
            {
                Means = mean,
                StandardDeviations = stdDev
            };

            // Compute
            actual.Compute();
            var transform = expected.Learn(cov);

            // Transform
            double[,] actualTransform = actual.Transform(data);
            double[,] expectedTransform = expected.Transform(data);

            // Verify both are equal with 0.01 tolerance value
            Assert.IsTrue(Matrix.IsEqual(actualTransform, expectedTransform, 0.01));

            // Transform
            double[,] image = actual.Transform(data);
            double[,] reverse = actual.Revert(image);

            // Verify both are equal with 0.01 tolerance value
            Assert.IsTrue(Matrix.IsEqual(reverse, data, 1e-6));

            // Transform
            double[][] image2 = transform.Transform(data.ToJagged());
            double[][] reverse2 = transform.Inverse().Transform(image2);
            Assert.IsTrue(Matrix.IsEqual(reverse, reverse2, 1e-6));
            Assert.IsTrue(Matrix.IsEqual(reverse2, data, 1e-6));

            // Transform
            double[][] reverse3 = actual.Revert(image2);
            Assert.IsTrue(Matrix.IsEqual(reverse, reverse3, 1e-6));
            Assert.IsTrue(Matrix.IsEqual(reverse3, data, 1e-6));

            var a = transform.Transform(data.ToJagged()).ToMatrix();
            Assert.IsTrue(Matrix.IsEqual(a, expectedTransform, 0.01));
        }