/// <summary> /// Calculates probability. /// </summary> /// <param name="item"> element where includes item average and stdev </param> /// <param name="element"> new test data element</param> /// <returns>probability </returns> private double CalculateProbability(SummaryListElement item, double element) { var probability = (double)(1 / (Math.Sqrt(2 * Math.PI) * item.StandardDeviation)) * Math.Exp(-(double)(Math.Pow(element - item.Average, 2) / (2 * Math.Pow(item.StandardDeviation, 2)))); return(probability); }
/// <summary> /// Calculates every class atribute average and stdev /// </summary> /// <param name="classDictionary"> Grouped elements by classes</param> /// <returns>classSummary</returns> private Dictionary <string, List <SummaryListElement> > GetClassSummary(Dictionary <string, List <CustomDataElement> > classDictionary) { Dictionary <string, List <SummaryListElement> > classSummary = new Dictionary <string, List <SummaryListElement> >(); foreach (var classItem in classDictionary) { classSummary.Add(classItem.Key, new List <SummaryListElement>()); for (int i = 0; i < classItem.Value[0].Elements.Count; i++) { List <double> temp = new List <double>(); foreach (var item in classItem.Value) { for (int j = 0; j < item.Elements.Count; j++) { if (j == i) { temp.Add(item.Elements[i]); } } } var average = Average(temp); var standartDeviation = StandartDeviation(temp, average); var summaryListElement = new SummaryListElement() { Average = average, StandardDeviation = standartDeviation }; classSummary[classItem.Key].Add(summaryListElement); } } return(classSummary); }