Accord.Statistics.Kernels.Sparse.SparseGaussian.Estimate C# (CSharp) Method

Estimate() public static method

Estimate appropriate values for sigma given a data set.
This method uses a simple heuristic to obtain appropriate values for sigma in a radial basis function kernel. The heuristic is shown by Caputo, Sim, Furesjo and Smola, "Appearance-based object recognition using SVMs: which kernel should I use?", 2002.
public static Estimate ( double inputs, int samples, DoubleRange &range ) : SparseGaussian
inputs double The data set.
samples int The number of random samples to analyze.
range AForge.DoubleRange The range of suitable values for sigma.
return SparseGaussian
        public static SparseGaussian Estimate(double[][] inputs, int samples, out DoubleRange range)
        {
            if (samples > inputs.Length)
                throw new ArgumentOutOfRangeException("samples");

            double[] distances = Gaussian.Distances(inputs, samples);

            double q1 = Math.Sqrt(distances[(int)Math.Ceiling(0.15 * distances.Length)] / 2.0);
            double q9 = Math.Sqrt(distances[(int)Math.Ceiling(0.85 * distances.Length)] / 2.0);
            double qm = Math.Sqrt(Measures.Median(distances, alreadySorted: true) / 2.0);

            range = new DoubleRange(q1, q9);

            return new SparseGaussian(sigma: qm);
        }