public void TransformTest2()
{
// Using a linear kernel should be equivalent to standard PCA
IKernel kernel = new Linear();
// Create analysis
var target = new KernelPrincipalComponentAnalysis(data, kernel, AnalysisMethod.Center);
// Set the minimum variance threshold to 0.001
target.Threshold = 0.001;
// Compute
target.Compute();
var r = target.Result;
double[,] actual = target.Transform(data, 1);
// first inversed.. ?
double[,] expected = new double[,]
{
{ -0.827970186 },
{ 1.77758033 },
{ -0.992197494 },
{ -0.274210416 },
{ -1.67580142 },
{ -0.912949103 },
{ 0.099109437 },
{ 1.14457216 },
{ 0.438046137 },
{ 1.22382056 },
};
// Verify both are equal with 0.001 tolerance value
Assert.IsTrue(Matrix.IsEqual(actual, expected, 0.0001));
// Assert the result equals the transformation of the input
double[,] result = target.Result;
double[,] projection = target.Transform(data);
Assert.IsTrue(Matrix.IsEqual(result, projection, 0.000001));
}