Changeset 14887 for branches/RBFRegression/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/GaussianKernel.cs
- Timestamp:
- 04/24/17 18:31:44 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/RBFRegression/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/GaussianKernel.cs
r14883 r14887 21 21 22 22 using System; 23 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; 25 using HeuristicLab.Data; 26 using HeuristicLab.Parameters; 26 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 28 29 namespace HeuristicLab.Algorithms.DataAnalysis {29 namespace HeuristicLab.Algorithms.DataAnalysis.KernelRidgeRegression { 30 30 [StorableClass] 31 [Item("GaussianKernel", "A kernel function that uses Gaussian function ")]31 [Item("GaussianKernel", "A kernel function that uses Gaussian function exp(-||x-c||/beta²). Positive definite beta > 0")] 32 32 public class GaussianKernel : KernelBase { 33 33 … … 39 39 protected GaussianKernel(GaussianKernel original, Cloner cloner) : base(original, cloner) { } 40 40 public GaussianKernel() { 41 Parameters.Add(new FixedValueParameter<DoubleValue>(BetaParameterName, "The beta in the kernelfunction exp(-||x-c||/beta²)", new DoubleValue(2)));42 41 } 43 42 public override IDeepCloneable Clone(Cloner cloner) { … … 47 46 48 47 protected override double Get(double norm) { 49 if (Math.Abs(Beta) < double.Epsilon) return double.NaN; 50 return Math.Exp(-norm * norm / (Beta * Beta)); 48 var beta = Beta.Value; 49 if (Math.Abs(beta) < double.Epsilon) return double.NaN; 50 return Math.Exp(-norm * norm / (beta * beta)); 51 51 } 52 52 53 53 protected override double GetGradient(double norm) { 54 if (Math.Abs(Beta) < double.Epsilon) return double.NaN; 55 return 2 * norm * norm / Math.Pow(Beta, 3) * Math.Exp(-norm * norm / (Beta * Beta)); 54 var beta = Beta.Value; 55 if (Math.Abs(beta) < double.Epsilon) return double.NaN; 56 return 2 * norm * norm / Math.Pow(beta, 3) * Math.Exp(-norm * norm / (beta * beta)); 56 57 } 57 58 }
Note: See TracChangeset
for help on using the changeset viewer.