Accord.Statistics.Kernels.Polynomial.ReverseDistance C# (CSharp) Метод

ReverseDistance() публичный Метод

Computes the distance in input space between two points given in feature space.
public ReverseDistance ( double x, double y ) : double
x double Vector x in feature (kernel) space.
y double Vector y in feature (kernel) space.
Результат double
        public double ReverseDistance(double[] x, double[] y)
        {
            double sumx = constant;
            double sumy = constant;
            double sum = constant;

            for (int i = 0; i < x.Length; i++)
            {
                sumx += x[i] * x[i];
                sumy += y[i] * y[i];
                sum += x[i] * y[i];
            }

            double q = 1.0 / degree;

            return Math.Pow(sumx, q) + Math.Pow(sumy, q) - 2.0 * Math.Pow(sum, q);
        }

Usage Example

Пример #1
0
        public void ExpandReverseDistanceTest()
        {
            for (int i = 1; i <= 10; i++)
            {
                Polynomial kernel = new Polynomial(i, 0);

                var x = new double[] { 0.5, 2.0 };
                var y = new double[] { 1.3, -0.2 };

                var phi_x = kernel.Transform(x);
                var phi_y = kernel.Transform(y);

                //int expected_size = (int)System.Math.Pow(x.Length, i);
                //Assert.AreEqual(phi_x.Length, phi_y.Length);
                //Assert.AreEqual(phi_x.Length, expected_size);

                double d = Distance.SquareEuclidean(x, y);
                double phi_d = kernel.ReverseDistance(phi_x, phi_y);

                Assert.AreEqual(phi_d, d, 1e-6);
                Assert.IsFalse(double.IsNaN(phi_d));
                Assert.IsFalse(double.IsNaN(d));
            }
        }