C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    public class Svmlinkernel : Svmgenkernel
    {
        public int n { get; set; }
        public double[] mu { get; set; }

        public Svmlinkernel(double[,] ddata, double[] yy) : base(yy, ddata)
        {
            this.n = data.GetLength(1);
            this.mu = new double[n];

            for (int j = 0; j < n; j++)
            {
                mu[j] = 0.0;
            }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    mu[j] += data[i, j];
                }
            }
            for (int j = 0; j < n; j++)
            {
                mu[j] /= m;
            }
            fill();
        }

        public override double kernel(double xi, double xj)
        {
            return 0.0;
        }

        public override double kernel(double[] xi, double[] xj)
        {
            double dott = 0.0;
            for (int k = 0; k < n; k++)
            {
                dott += (xi[k] - mu[k]) * (xj[k] - mu[k]);
            }
            return dott;
        }
    }
}
 

2 代码格式

using System;

namespace Legalsoft.Truffer
{
    public class Svmlinkernel : Svmgenkernel
    {
        public int n { get; set; }
        public double[] mu { get; set; }

        public Svmlinkernel(double[,] ddata, double[] yy) : base(yy, ddata)
        {
            this.n = data.GetLength(1);
            this.mu = new double[n];

            for (int j = 0; j < n; j++)
            {
                mu[j] = 0.0;
            }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    mu[j] += data[i, j];
                }
            }
            for (int j = 0; j < n; j++)
            {
                mu[j] /= m;
            }
            fill();
        }

        public override double kernel(double xi, double xj)
        {
            return 0.0;
        }

        public override double kernel(double[] xi, double[] xj)
        {
            double dott = 0.0;
            for (int k = 0; k < n; k++)
            {
                dott += (xi[k] - mu[k]) * (xj[k] - mu[k]);
            }
            return dott;
        }
    }
}

你可能感兴趣的:(C#数值计算,Numerical,Recipes,c#,分类,开发语言,数值计算)