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));
}