scholkopf() public static method

public static scholkopf ( ) : ].double[
return ].double[
        public void ComputeTest3()
        {
            // Schölkopf KPCA toy example
            double[][] inputs = KernelDiscriminantAnalysisTest.scholkopf().ToJagged();

            int[] output = Matrix.Expand(new int[, ] {
                { 1 }, { 2 }, { 3 }
            }, new int[] { 30, 30, 30 }).GetColumn(0);

            var target = new LinearDiscriminantAnalysis(inputs, output);

            target.Compute();


            double[][] actualOutput = target.Transform(inputs, 2);

            double[][] expectedOutput = new double[][]
            {
                new double[] { -0.538139989229878, -0.121488441426448 },
                new double[] { -0.520567977909383, -0.236347775257103 },
                new double[] { -0.613477771536265, -0.237553378277353 },
                new double[] { -0.881409292261883, 0.0935329540430248 },
                new double[] { -0.786030327227691, -0.194447244320605 },
                new double[] { -0.551442781305912, -0.0123559223681317 },
                new double[] { -0.654158684224005, -0.197674316111905 },
                new double[] { -0.559262527603992, 0.013941098843778 },
                new double[] { -0.66411263033584, -0.150490536781379 },
                new double[] { -0.450278115670319, -0.26635277047329 },
                new double[] { -0.754277919814726, -0.362102431498804 },
                new double[] { -0.734928584895253, -0.248980106866025 },
                new double[] { -0.653608644698921, 0.0143647201181394 },
                new double[] { -0.760931829205159, -0.210515053383166 },
                new double[] { -0.618516474044195, -0.142285367330635 },
                new double[] { -0.779342671809792, -0.141199637690287 },
                new double[] { -0.735924645881001, -0.146617711795974 },
                new double[] { -0.785744941649802, -0.31168984794763 },
                new double[] { -0.669124608334209, -0.420106774148463 },
                new double[] { -0.824474062918818, 0.147088211780247 },
                new double[] { -0.799320425464541, -0.0637527478684568 },
                new double[] { -0.663385572908364, -0.341675337652223 },
                new double[] { -0.711489490612721, -0.285076461900782 },
                new double[] { -0.629974516987287, -0.0793021800418604 },
                new double[] { -0.65653220838978, -0.215831476310217 },
                new double[] { -0.732028761895192, -0.0344445204239324 },
                new double[] { -0.747862524505661, -0.0387281405057906 },
                new double[] { -0.584471308297719, -0.146019839184912 },
                new double[] { -0.505999843470041, -0.292203766994798 },
                new double[] { -0.753145346001892, -0.344521076589941 },
                new double[] { 0.524001176904191, -0.64158358593467 },
                new double[] { 0.423231837049123, -0.286159521674357 },
                new double[] { 0.656426922526874, -0.734236743185728 },
                new double[] { 0.400687334850924, -0.55115062988607 },
                new double[] { 0.636240473795815, -0.748303834209756 },
                new double[] { 0.434843292522556, -0.566740271085617 },
                new double[] { 0.6104713046872, -0.678967931597066 },
                new double[] { 0.705262787734728, -0.640414054245901 },
                new double[] { 0.447832238019099, -0.661180602320438 },
                new double[] { 0.659661046824861, -0.630212303468225 },
                new double[] { 0.672147865129419, -0.503357319234685 },
                new double[] { 0.638711507323203, -0.644310115155753 },
                new double[] { 0.536863923134139, -0.438197907521421 },
                new double[] { 0.496141960347812, -0.530750925839334 },
                new double[] { 0.906503239478175, -0.59100400335581 },
                new double[] { 0.604370405460113, -0.46954478102178 },
                new double[] { 0.412131895699799, -0.758049666960606 },
                new double[] { 0.423464497686766, -0.438725534434289 },
                new double[] { 0.351983120391112, -0.693723302359591 },
                new double[] { 0.600453835286623, -0.446793343407863 },
                new double[] { 0.585438337076168, -0.544511883828685 },
                new double[] { 0.727841528212698, -0.650301108602448 },
                new double[] { 0.751448391254333, -0.633046233976002 },
                new double[] { 0.857558106835016, -0.587237152739008 },
                new double[] { 0.554131023905099, -0.639630778761857 },
                new double[] { 0.604769997035484, -0.660127547060936 },
                new double[] { 0.532120384569746, -0.448864888884797 },
                new double[] { 0.62587117635701, -0.482512841662285 },
                new double[] { 0.580333409415421, -0.80962907380129 },
                new double[] { 0.601495554392805, -0.730598326012776 },
                new double[] { 0.593941507609862, 0.350118652741363 },
                new double[] { 0.357712432226073, 0.2963287302749 },
                new double[] { 0.551383385237947, 0.374412117881701 },
                new double[] { 0.690356212604399, 0.240090830766309 },
                new double[] { 0.462549608533101, 0.337029321214765 },
                new double[] { 0.613846624949793, 0.302978372516851 },
                new double[] { 0.632960280224768, 0.690169219132759 },
                new double[] { 0.56675518056767, 0.218090431387548 },
                new double[] { 0.511872653377024, 0.0692203349420495 },
                new double[] { 0.177443905363662, 0.23100145864499 },
                new double[] { 0.327851974844022, 0.415060901754569 },
                new double[] { 0.341124386412447, 0.416335789100053 },
                new double[] { 0.44860383164398, 0.214369753920447 },
                new double[] { 0.63110091195233, 0.59664872441043 },
                new double[] { 0.587620021924801, 0.451661866983025 },
                new double[] { 0.433140254056975, 0.56057876616672 },
                new double[] { 0.640109409731833, 0.298279362477078 },
                new double[] { 0.140413240631302, 0.233509735221199 },
                new double[] { 0.751771638050688, 0.407674765260726 },
                new double[] { 0.57522328805595, 0.296203994397562 },
                new double[] { 0.394007233177402, 0.32004606890218 },
                new double[] { 0.323309388831049, 0.188114883322704 },
                new double[] { 0.478221796731402, 0.409092441378802 },
                new double[] { 0.673650933463591, 0.561639241955278 },
                new double[] { 0.645748558652938, 0.282496300419708 },
                new double[] { 0.588553164739597, 0.428759787951118 },
                new double[] { 0.377052961673182, 0.466388880012159 },
                new double[] { 0.752164965657736, 0.289900686186869 },
                new double[] { 0.247467021467445, 0.361971115290112 },
                new double[] { 0.636721385361009, 0.399430035006511 }
            };

            Assert.IsTrue(Matrix.IsEqual(actualOutput, expectedOutput, 1e-5));

            // Assert the result equals the transformation of the input
            double[][] result     = target.Result.ToJagged();
            double[][] projection = target.Transform(inputs);
            Assert.IsTrue(Matrix.IsEqual(result, projection));
            Assert.IsTrue(Matrix.IsEqual(result, expectedOutput, 1e-6));


            int[] actual2 = target.Classify(inputs);
            Assert.IsTrue(Matrix.IsEqual(actual2, output));

            double[][] scores  = new double[inputs.Length][];
            int[]      actual3 = new int[inputs.Length];
            for (int i = 0; i < inputs.Length; i++)
            {
                actual3[i] = target.Classify(inputs[i], out scores[i]);
            }

            Assert.IsTrue(Matrix.IsEqual(actual3, output));
            var actualMeans = target.projectedMeans;

            scores = scores.Get(0, 5, null);
            //var str2 = scores.ToCSharp();

            var expected = new double[][] {
                new double[] { -0.0213345342185279, -1.48626837046456, -1.31720201011333 },
                new double[] { -0.0295574706116435, -1.35158673700292, -1.40393954892816 },
                new double[] { -0.0092314990039484, -1.5648696800027, -1.60459093003653 },
                new double[] { -0.108880936496527, -2.6251849668169, -1.99175104959092 },
                new double[] { -0.0126381832555252, -2.04103325730257, -1.97099575187989 }
            };

            Assert.IsTrue(Matrix.IsEqual(scores, expected, 1e-6));
        }