コード例 #1
0
        /// <summary>
        /// Cholesky of Kernel matrix
        /// </summary>
        /// <param name="kf">Kernel function</param>
        /// <param name="xData">Data with which to build the matrix</param>
        /// <returns></returns>
        public static LowerTriangularMatrix Cholesky(IKernelFunction kf, Dictionary <int, Vector> xData)
        {
            if (null == kf || null == xData)
            {
                throw new ArgumentException("Unexpected null arguments");
            }

            int nData = xData.Count;

            // Allocate and fill the Kernel matrix.
            PositiveDefiniteMatrix K = new PositiveDefiniteMatrix(nData, nData);

            for (int i = 0; i < nData; i++)
            {
                for (int j = 0; j < nData; j++)
                {
                    // Evaluate the kernel. All hyperparameters, including noise
                    // variance are handled in the kernel.
                    K[i, j] = kf.EvaluateX1X2(xData[i], xData[j]);
                }
            }

            LowerTriangularMatrix chol = new LowerTriangularMatrix(nData, nData);

            chol.SetToCholesky(K);
            K = null;
            GC.Collect(0);

            return(chol);
        }
コード例 #2
0
        public static IKernelFunction GetKernelFunction(int index, Parameters param)
        {
            IKernelFunction kf = (IKernelFunction)allKernelFunctions[index].Clone();

            kf.Parameters = param;
            return(kf);
        }
コード例 #3
0
ファイル: SvmMain.cs プロジェクト: jdrudolph/compbio-base
        public static double KFunction(BaseVector x, BaseVector y, SvmParameter param)
        {
            IKernelFunction kf = param.kernelFunction;
            double          sx = double.NaN;
            double          sy = double.NaN;

            if (kf.UsesSquares)
            {
                sx = x.Dot(x);
                sy = y.Dot(y);
            }
            return(kf.Evaluate(x, y, sx, sy));
        }
コード例 #4
0
ファイル: SvmKernel.cs プロジェクト: JurgenCox/compbio-base
 internal SvmKernel(int l, BaseVector[] x1, SvmParameter param)
 {
     kernelFunction = param.kernelFunction;
     x = (BaseVector[]) x1.Clone();
     if (kernelFunction.UsesSquares){
         xSquare = new double[l];
         for (int i = 0; i < l; i++){
             xSquare[i] = x[i].Dot(x[i]);
         }
     } else{
         xSquare = null;
     }
 }
コード例 #5
0
 internal SvmKernel(int l, BaseVector[] x1, SvmParameter param)
 {
     kernelFunction = param.kernelFunction;
     x = (BaseVector[])x1.Clone();
     if (kernelFunction.UsesSquares)
     {
         xSquare = new double[l];
         for (int i = 0; i < l; i++)
         {
             xSquare[i] = x[i].Dot(x[i]);
         }
     }
     else
     {
         xSquare = null;
     }
 }
コード例 #6
0
        void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
        {
            reader.Read();
            reader.ReadStartElement("Mean");
            string meanTypeName   = reader.Name;
            var    meanSerializer = new XmlSerializer(Type.GetType(meanTypeName));

            mean = (IFunction)meanSerializer.Deserialize(reader);
            reader.ReadEndElement();
            reader.ReadStartElement("Kernel");
            string kernelTypeName   = reader.Name;
            var    kernelSerializer = new XmlSerializer(Type.GetType(kernelTypeName));

            kernel = (IKernelFunction)kernelSerializer.Deserialize(reader);
            reader.ReadEndElement();
            reader.ReadEndElement();
        }
コード例 #7
0
ファイル: GPTests.cs プロジェクト: ScriptBox21/dotnet-infer
        public static PositiveDefiniteMatrix GramMatrix(IKernelFunction kf, Vector[] xData)
        {
            int nData = xData.Length;

            // Allocate and fill the Kernel matrix.
            PositiveDefiniteMatrix K = new PositiveDefiniteMatrix(nData, nData);

            for (int i = 0; i < nData; i++)
            {
                for (int j = 0; j < nData; j++)
                {
                    // Evaluate the kernel. All hyperparameters, including noise
                    // variance are handled in the kernel.
                    K[i, j] = kf.EvaluateX1X2(xData[i], xData[j]);
                }
            }
            return(K);
        }
コード例 #8
0
        public static Vector[] KxD(IKernelFunction kf, Vector[] xData, Vector[] dData)
        {
            int nData = xData.Length;

            var result = new Vector[nData];

            for (int i = 0; i < nData; i++)
            {
                result[i] = Vector.Zero(dData.Length);
                for (int j = 0; j < dData.Length; j++)
                {
                    // Evaluate the kernel. All hyperparameters, including noise
                    // variance are handled in the kernel.
                    result[i][j] = kf.EvaluateX1X2(xData[i], dData[j]);
                }
            }
            return(result);
        }
コード例 #9
0
        public void TestKernelFactory()
        {
            KernelFactory   kfact = KernelFactory.Instance;
            IKernelFunction kf1   = kfact.CreateKernelFunction("WhiteNoise");
            IKernelFunction kf2   = kfact.CreateKernelFunction("SquaredExponential");
            IKernelFunction kf3   = kfact.CreateKernelFunction("ARD");
            IKernelFunction kf4   = kfact.CreateKernelFunction("LinearKernel");
            IKernelFunction kf5   = kfact.CreateKernelFunction("SummationKernel");
            IKernelFunction kf6   = kfact.CreateKernelFunction("NNKernel");

            Assert.NotNull(kf1);
            Assert.NotNull(kf2);
            Assert.NotNull(kf3);
            Assert.NotNull(kf4);
            Assert.NotNull(kf5);
            Assert.NotNull(kf6);

            Assert.IsType <WhiteNoise>(kf1);
            Assert.IsType <SquaredExponential>(kf2);
            Assert.IsType <ARD>(kf3);
            Assert.IsType <LinearKernel>(kf4);
            Assert.IsType <SummationKernel>(kf5);
            Assert.IsType <NNKernel>(kf6);
        }
コード例 #10
0
        /*! \pre the \f$ x \f$ values must be sorted.
         *    \pre kernel needs a Real operator()(Real x) implementation
         *
         */


        public KernelInterpolation2D(List <double> xBegin, int size, List <double> yBegin, int ySize,
                                     Matrix zData, IKernelFunction kernel)
        {
            impl_ = new KernelInterpolation2DImpl <IKernelFunction>(xBegin, size, yBegin, ySize, zData, kernel);
            this.update();
        }
コード例 #11
0
ファイル: SparseGPFixed.cs プロジェクト: xornand/Infer.Net
		/// <summary>
		/// Constructor from kernel function and basis
		/// </summary>
		public SparseGPFixed(IKernelFunction kf, IList<Vector> basis)
			: this(new GaussianProcess(new ConstantFunction(), kf), basis)
		{
		}
コード例 #12
0
 /// <summary>
 /// Constructor from kernel function and basis
 /// </summary>
 public SparseGPFixed(IKernelFunction kf, IList <Vector> basis)
     : this(new GaussianProcess(new ConstantFunction(), kf), basis)
 {
 }
コード例 #13
0
 public GaussianProcess(IFunction mean, IKernelFunction kernel)
 {
     this.mean   = mean;
     this.kernel = kernel;
 }
コード例 #14
0
		/// <summary>
		/// Cholesky of Kernel matrix
		/// </summary>
		/// <param name="kf">Kernel function</param>
		/// <param name="xData">Data with which to build the matrix</param>
		/// <returns></returns>
		public static LowerTriangularMatrix Cholesky(IKernelFunction kf, Dictionary<int, Vector> xData)
		{
			if (null == kf || null == xData)
				throw new ArgumentException("Unexpected null arguments");

			int nData = xData.Count;

			// Allocate and fill the Kernel matrix.
			PositiveDefiniteMatrix K = new PositiveDefiniteMatrix(nData, nData);

			for (int i = 0; i < nData; i++) {
				for (int j = 0; j < nData; j++) {
					// Evaluate the kernel. All hyperparameters, including noise
					// variance are handled in the kernel.
					K[i, j] = kf.EvaluateX1X2(xData[i], xData[j]);
				}
			}

			LowerTriangularMatrix chol = new LowerTriangularMatrix(nData, nData);
			chol.SetToCholesky(K);
			K = null;
#if !SILVERLIGHT
			GC.Collect(0);
#endif

			return chol;
		}
コード例 #15
0
ファイル: KernelInterpolation.cs プロジェクト: igitur/qlnet
 /*! \pre the \f$ x \f$ values must be sorted.
  * \pre kernel needs a Real operator()(Real x) implementation
  */
 public KernelInterpolation(List <double> xBegin, int size, List <double> yBegin, IKernelFunction kernel)
 {
     impl_ = new KernelInterpolationImpl <IKernelFunction>(xBegin, size, yBegin, kernel);
     impl_.update();
 }