Пример #1
0
        private static void Create(int n1, int n2, int k, out double[][] inputs, out NaiveKNearestNeighbors naive, out KNearestNeighbors <double[]> normal, out KNearestNeighbors target)
        {
            int n = n1 + n2;

            double[][] gauss1 = MultivariateNormalDistribution.Generate(n1,
                                                                        mean: new double[] { 2, 1 },
                                                                        covariance: new double[, ]
            {
                { 1, 0 },
                { 0, 1 },
            });

            double[][] gauss2 = MultivariateNormalDistribution.Generate(n2,
                                                                        mean: new double[] { -1, 4 },
                                                                        covariance: new double[, ]
            {
                { 2, 1 },
                { 0, 3 },
            });

            inputs = gauss1.Stack(gauss2);
            int[] outputs = Matrix.Vector(n1, 0).Concatenate(Matrix.Vector(n2, +1));

            var idx = Vector.Sample(n1 + n2);

            inputs  = inputs.Submatrix(idx);
            outputs = outputs.Submatrix(idx);

            naive  = new NaiveKNearestNeighbors(k, inputs, outputs);
            normal = new KNearestNeighbors <double[]>(k, inputs, outputs, new Euclidean());
            target = new KNearestNeighbors(k, inputs, outputs);
        }
Пример #2
0
        private static void Create(int n1, int n2, int k, out double[][] inputs, out NaiveKNearestNeighbors naive, out KNearestNeighbors<double[]> normal, out KNearestNeighbors target)
        {
            int n = n1 + n2;

            double[][] gauss1 = MultivariateNormalDistribution.Generate(n1,
                mean: new double[] { 2, 1 },
                covariance: new double[,] 
                {
                    { 1, 0 },
                    { 0, 1 },
                });

            double[][] gauss2 = MultivariateNormalDistribution.Generate(n2,
                mean: new double[] { -1, 4 },
                covariance: new double[,] 
                {
                    { 2, 1 },
                    { 0, 3 },
                });

            inputs = gauss1.Stack(gauss2);
            int[] outputs = Matrix.Vector(n1, 0).Concatenate(Matrix.Vector(n2, +1));

            var idx = Vector.Sample(n1 + n2);
            inputs = inputs.Submatrix(idx);
            outputs = outputs.Submatrix(idx);

            naive = new NaiveKNearestNeighbors(k, inputs, outputs);
            normal = new KNearestNeighbors<double[]>(k, inputs, outputs, new Euclidean());
            target = new KNearestNeighbors(k, inputs, outputs);
        }