/// <summary>
        ///   Compute model error for a given data set.
        /// </summary>
        ///
        /// <param name="inputs">The input points.</param>
        /// <param name="outputs">The output points.</param>
        ///
        /// <returns>The percent of misclassification errors for the data.</returns>
        ///
        public double ComputeError(int[][] inputs, int[] outputs)
        {
            int errors = 0;

            Parallel.For(0, inputs.Length, i =>
            {
                int expectedOutput = outputs[i];
                int actualOutput   = Classifier.Compute(inputs[i]);

                if (expectedOutput != actualOutput)
                {
                    Interlocked.Increment(ref errors);
                }
            });

            return(errors / (double)inputs.Length);
        }