Data Mining

Download Free Data Mining Source Code In C/C++, C#, Visual Basic, Visual Basic.NET, Java,
and other programming languages
Welcome to Data Mining Sign in | Join | Help
in Search

Data Mining Source Code Newsletter

Announcing The Data Mining Source Code Newsletter!

Subscribe By Email | Subscribe By RSS Feed

C# Math Class for Computing Standard Deviation, Normal Distribution or Probability Density

Last post 09-18-2004, 7:58 by Kingsley Tagbo. 0 replies.
Sort Posts: Previous Next
  •  09-18-2004, 7:58 2523

    C# Math Class for Computing Standard Deviation, Normal Distribution or Probability Density

    using System;
    using System.Collections;

    ///<Summary>
    ///C# Math Class for Computing Standard Deviation, Normal Distribution, Probability Density
    ///Will Be Used In C# Naive Bayes Data Mining Algorithm for Classifying Numeric or Continuous Data
    ///</Summary>
    ///<Remarks>
    ///C# Probability Density Function or Normal Distrubution from
    ///http://www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_20936306.html
    ///C# Mean and C# Standard Deviation Functions from Daniel Olson at
    ///http://authors.aspalliance.com/olson/
    ///</Remarks>
    public class Maths
    {      
            ///<Summary>
            ///Main function used to test or execute class functions from the command prompt
            ///</Summary>
            public static void Main()
            {
                    //Test Standard Deviation Computation
                    double[] arrayOfDoubles = {2.5,2.6,2.8,3.2,3.8,3.9,4.0,4.3,4.4,4.8};
                   
                    double stdDev = StandardDeviation(arrayOfDoubles);
                   
                    Console.WriteLine ("Standard Deviation Of Array Of Doubles Is : {0}", stdDev.ToString());
                   
                    //Test Probability Density or Normal Distribution Computation
                    Console.WriteLine("Normal Distribution or Probability Density Is : {0}", NormalDistribution(42, 40, 1.5));
                   
                    Console.ReadLine();
            }
           
     ///<Summary>
    ///Calculates standard deviation of numbers in an ArrayList
    ///</Summary>      
     public static double StandardDeviation(ArrayList num)
      {
        double SumOfSqrs = 0;
        double avg = Average(num);
        for (int i=0; i<num.Count; i++)
        {
          SumOfSqrs += Math.Pow(((double)numIdea - avg), 2);
        }
        double n = (double)num.Count;
        return Math.Sqrt(SumOfSqrs/(n-1));
      }
       
        ///<Summary>
        ///Calculates standard deviation of numbers of doubles data type in an array
        ///</Summary> 
      public static double StandardDeviation(double[] num)
      {
        double Sum = 0.0, SumOfSqrs = 0.0;
        for (int i=0; i<num.Length; i++)
        {
          Sum += numIdea;
          SumOfSqrs += Math.Pow(numIdea, 2);
        }
        double topSum = (num.Length * SumOfSqrs) - (Math.Pow(Sum, 2));
        double n = (double)num.Length;
        return Math.Sqrt( topSum / (n * (n-1)) );
      }
       
       ///<Summary>
      ///Calculates standard deviation of numbers of doubles data type in a column of an array
      ///</Summary> 
      public static double StandardDeviation(double[,] num, int col)
      {
        double Sum = 0.0, SumOfSqrs = 0.0;
        int len = num.GetLength(0);
        for (int i=0; i<len; i++)
        {
          Sum += num[i,col];
          SumOfSqrs += Math.Pow(num[i,col], 2);
        }
        double topSum = (len * SumOfSqrs) - (Math.Pow(Sum, 2));
        double n = System.Convert.ToDouble(len);
        return Math.Sqrt( topSum / (n * (n-1)) );
      }
     
       ///<Summary>
      ///Calculates average of numbers of doubles data type in an array
      ///</Summary> 
      public static double Average(double[] num)
      {
        double sum = 0.0;
        for (int i=0; i<num.Length; i++)
        {
          sum += numIdea;
        }
        double avg = sum / System.Convert.ToDouble(num.Length);

        return avg;
      }
     
       ///<Summary>
      ///Calculates average of numbers of integer data type in an array
      ///</Summary>   
      public static double Average(int[] num)
      {
        double sum = 0.0;
        for (int i=0; i<num.Length; i++)
        {
          sum += numIdea;
        }
        double avg = sum / System.Convert.ToDouble(num.Length);

        return avg;
      }
     
       ///<Summary>
      ///Calculates average of numbers of integer data type in an ArrayList
      ///</Summary> 
      public static double Average(ArrayList num)
      {
        double sum = 0.0;
        for (int i=0; i<num.Count; i++)
        {
          sum += (double)numIdea;
        }
        double avg = sum / System.Convert.ToDouble(num.Count);

        return avg;
      }

         /// <summary>
        /// Calculates Normal Distribution or Probability Density given the mean, and standard deviation
        /// </summary>
        /// <param name="x">The value for which you want the distribution.</param>
        /// <param name="mean">The arithmetic mean of the distribution.</param>
        /// <param name="deviation">The standard deviation of the distribution.</param>
        /// <returns>Returns the normal distribution for the specified mean and standard deviation.</returns>
        public static double NormalDistribution(double x, double mean, double deviation)
        {
            return NormalDensity(x, mean, deviation);
        }
        private static double NormalDensity(double x, double mean, double deviation)
        {
          return Math.Exp(-(Math.Pow((x - mean)/deviation, 2)/2))/Math.Sqrt(2*Math.PI)/deviation;
        }  
    }



    Sign-up For Data Mining Source Code Newsletter

Announcing The Data Mining Source Code Newsletter!

Subscribe By Email | Subscribe By RSS Feed