2012-03-25 9 views
6

मैं अंक के वर्गीकरण के लिए सी # में गॉसियन नाइव बेयस को लागू करने की कोशिश कर रहा हूं। मेरे पास ने पहले भाग (http://www.statsoft.com/textbook/naive-bayes-classifier/) संभाव्यता भाग को लागू किया है, लेकिन मुझे समझ में नहीं आता कि गॉसियन नाइव बेयस एल्गोरिदम सामान्य मॉडल को कैसे कार्यान्वित किया जाए। यह मेरा कोड है:गॉसियन नाइव बेयस लागू करें

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; 
     } 
    } 

इस PDF फ़ाइल में (समस्या 5) क्या मैं (http://romanager.ro/s.10-701.hw1.sol.pdf) क्या करने की जरूरत का वर्णन है। मेरा काम गौसिना नाइव बेयस और केएनएन एल्गोरिदम लागू करना है और परिणाम डेटा के एक सेट पर तुलना करना है। कृपया मुझे बताएं कि गॉसियन नाइव बेयस एल्गोरिदम को कहां और कैसे कार्यान्वित किया जाए।

धन्यवाद!

+0

कोई भी मेरी मदद कर सकते? :( – Urmelinho

+0

Urmelinho: एक उपहार प्रदान करें और कोई मदद कर सकता है :-) –

+0

कुछ विचारों के लिए मुझे नहीं लगता कि कोई मुझसे बक्षीस चाहता है ... एल्गोरिदम के इस हिस्से के लिए मैं पूरी तरह से बाहर हूं। आप विचार कर सकते हैं कि मेरा धन्यवाद समाधान के लिए आपका पुरस्कार होगा। मैं समाधान के रूप में कोई सलाह मानूंगा: डी – Urmelinho

उत्तर

संबंधित मुद्दे