public void kernel_matrix_success() { var actual = new KernelPrincipalComponentAnalysis(new Linear(), PrincipalComponentMethod.KernelMatrix); var expected = new KernelPrincipalComponentAnalysis(data, new Linear(), AnalysisMethod.Standardize); Linear kernel = new Linear(); double[][] K = kernel.ToJagged(data.ZScores().ToJagged()); // Compute actual.Learn(K); expected.Compute(); // Transform double[][] actualTransform = actual.Transform(K); double[][] expectedTransform1 = expected.Transform(data).ToJagged(); double[][] expectedTransform2 = expected.Transform(data.ToJagged()); // Verify both are equal with 0.01 tolerance value Assert.IsTrue(Matrix.IsEqual(actualTransform, expectedTransform1, 0.01)); Assert.IsTrue(Matrix.IsEqual(actualTransform, expectedTransform2, 0.01)); }