I am trying to implement a Gaussian naive Bayes in C # to classify points. I have implemented the first part ( http://www.statsoft.com/textbook/naive-bayes-classifier/ ), but I donβt understand how to implement the usual model of the Gauss Naive Bayes algorithm. This is my code:
class NaiveBayesClassifier { private List<Point> listTrainPoints = new List<Point>(); private int totalPoints = 0; public NaiveBayesClassifier(List<Point> listTrainPoints) { this.listTrainPoints = listTrainPoints; this.totalPoints = this.listTrainPoints.Count; } private List<Point> vecinityPoints(Point p, double maxDist) { List<Point> listVecinityPoints = new List<Point>(); for (int i = 0; i < listTrainPoints.Count; i++) { if (p.distance(listTrainPoints[i]) <= maxDist) { listVecinityPoints.Add(listTrainPoints[i]); } } return listVecinityPoints; } public double priorProbabilityFor(double currentType) { double countCurrentType = 0; for (int i = 0; i < this.listTrainPoints.Count; i++) { if (this.listTrainPoints[i].Type == currentType) { countCurrentType++; } } return (countCurrentType / this.totalPoints); } public double likelihoodOfXGiven(double currentType, List<Point> listVecinityPoints) { double countCurrentType = 0; for (int i = 0; i < listVecinityPoints.Count; i++) { if (listVecinityPoints[i].Type == currentType) { countCurrentType++; } } return (countCurrentType / this.totalPoints); } public double posteriorProbabilityXBeing(double priorProbabilityFor, double likelihoodOfXGiven) { return (priorProbabilityFor * likelihoodOfXGiven); } public int allegedClass(Point p, double maxDist) { int type1 = 1, type2 = 2; List<Point> listVecinityPoints = this.vecinityPoints(p, maxDist); double priorProbabilityForType1 = this.priorProbabilityFor(type1); double priorProbabilityForType2 = this.priorProbabilityFor(type2); double likelihoodOfXGivenType1 = likelihoodOfXGiven(type1, listVecinityPoints); double likelihoodOfXGivenType2 = likelihoodOfXGiven(type2, listVecinityPoints); double posteriorProbabilityXBeingType1 = posteriorProbabilityXBeing(priorProbabilityForType1, likelihoodOfXGivenType1); double posteriorProbabilityXBeingType2 = posteriorProbabilityXBeing(priorProbabilityForType2, likelihoodOfXGivenType2); if (posteriorProbabilityXBeingType1 > posteriorProbabilityXBeingType2) return type1; else return type2; } }
This pdf file (issue 5) describes what I need to do ( http://romanager.ro/s.10-701.hw1.sol.pdf ). My job is to implement the Gaussina Naive Bayes and kNN algorithms and compare the result for a dataset. Please teach me where and how to implement the Gauss Naive Bayes algorithm.
Thanks!
source share