Dieser Artikel beschreibt den in Java implementierten naiven Bayes -Algorithmus. Teilen Sie es für Ihre Referenz wie folgt weiter:
Ich glaube, dass die jungen Männer, die Data Mining- und Empfehlungssysteme durchführen, mit dem Naive Bayes -Algorithmus vertraut sind, daher werde ich nicht über die Algorithmusprinzipien sprechen. Ich möchte den naiven Bayes -Algorithmus hauptsächlich über Java Code implementieren, und die Idee ist:
1. Verwenden Sie JavaBean +ArrayList für die Trainingsdatenspeicherung
2. für Beispieldatentraining
Der spezifische Code lautet wie folgt:
Paket nb;/** * Eigenschaften von Ausbildungsmuster Javabean * */Public Class Javabean {int age; Stringeinkommen; Saitenstudent; String credit_rating; String Buys_Computer; public Javabean () {} public Javabean (int Alter, String -Einkommen, String Student, String Credit_rating, String buys_computer) {this.age = älter; this.income = Einkommen; this.student = Student; this.credit_rate = credit_rating; this.buys_computer=buys_computer;}public int getAge() { return age;}public void setAge(int age) { this.age = age;}public String getIncome() { return income;}public void setIncome(String income) { this.income = income;}public String getStudent() { return student;}public void setStudent(String student) { this.student = student;} public String getcRedit_rating () {return Credit_rate;} public void setcredit_rate (String credit_rate) {this.credit_rating = credit_rating;} public String getbuys_computer () {return buys_computer; this.buys_computer = buys_computer;}@overridepublic String toString () {return "javabean [agie =" + aga + ", reton =" + einkommen + ", student =" + student + ", credit_rateDer Teil der Algorithmus -Implementierung:
Paket nb; import Java.io.BuffenedReader; Import Java.io.file; Import Java.io.Filereader; Import Java.util.ArrayList; öffentliche Klassen testnb { / ** data_Length*Gedanken des Algorithmus* / public static Arraylist <javaban> list = new Arraylist <javabean> (;;;;;;;;;; static int data_length = 0; public static void main (String [] args) {// 1. Lesen Sie Daten und legen Sie sie in die List -Containerdatei = neue Datei ("e: //test.txt"); txt2String (Datei); // Data Test Sample TestData (25, "Medium", "Ja", "fair"); } // Beispieldaten public static void txt2String (Dateidatei) {try {bufferedReader br = new bufferedReader (New FileReader (Datei)); // Konstruieren Sie eine BufferedReader -Klasse, um die Dateistring S = Null zu lesen; while ((s = br.readline ())! Splitt (s); } br.close (); } catch (Ausnahme e) {e.printstacktrace (); }} // speichern in ArrayList public static void splitt (string str) {string strr = str.trim (); String [] abc = strr.Split ("[// p {space}]+"); int aget = Integer.ParseInt (ABC [0]); Javabäe Bean = New Javaban (Alter, ABC [1], ABC [2], ABC [3], ABC [4]); list.add (bean); } // Trainingsprobe, testen Sie public static void testData (int Alter, String A, String B, String C) {// Training Beispiel int number_yes = 0; int bucket_no = 0; // die Anzahl der Altersfälle int num_age_yes = 0; int num_age_no = 0; // Einkommen int num_income_yes = 0; int num_income_no = 0; // student int num_student_yes = 0; int num_stdent_no = 0; // Credit int num_credit_yes = 0; int num_credit_no = 0; // Reiseliste, um Daten für (int i = 0; i <list.size (); i ++) {javabean bb = list.get (i) zu erhalten; if (bb.getbuys_computer (). Equals ("Ja") {// yes number_yes ++; if (bb.getinCome (). Equals (a)) {// Einkommen num_income_yes ++; } if (bb.getstudent (). Equals (b)) {// student num_student_yes ++; } if (bb.getCredit_rate (). Equals (c)) {// Credit num_credit_yes ++; } if (bb.getage () == AGE) {// AGE NUM_AGE_YES ++; }} else {// no bumber_no ++; if (bb.getinCome (). Equals (a)) {// Einkommen num_income_no ++; } if (bb.getstudent (). Equals (b)) {// student num_stdent_no ++; } if (bb.getCredit_rate (). Equals (c)) {// Credit num_credit_no ++; } if (bb.getage () == AGE) {// AGE NUM_AGE_NO ++; }}} System.out.println ("Die Anzahl der Einkäufe:"+number_yes); System.out.println ("Die Anzahl der nicht erworbenen Geschichte:"+bumber_no); System.out.println ("Kaufen+Alter:"+num_age_yes); System.out.println ("Kaufen+Einkommen:"+num_age_no); System.out.println ("Kaufen+Einkommen:"+num_income_yes); System.out.println ("Kaufen+Einkommen:"+num_income_yes); System.out.println ("Kaufen+Stundent:"+num_student_yes); System.out.println ("buy+student:"+num_stdent_no); System.out.println ("Kaufen+Stundent:"+num_stdent_no); System.out.println ("Kaufen+Kredit:"+num_credit_yes); System.out.println ("Kaufen+Kredit:"+num_credit_no); //// Wahrscheinlichkeitsurteil double buy_yes = number_yes*1.0/data_length; // Wahrscheinlichkeit kaufen double buy_no = bumber_no*1.0/data_length; // Wahrscheinlichkeit, nicht system.out.println zu kaufen ("Wahrscheinlichkeit in Schulungsdaten kaufen:"+buy_yes); System.out.println ("Wahrscheinlichkeit in Schulungsdaten kaufen:"+buy_no); /// Unknown user's double nb_buy_yes=(1.0*num_age_yes/number_yes)*(1.0*num_income_yes/number_yes)*(1.0*num_student_yes/number_yes)*(1.0*num_credit_yes/number_yes)*(1.0*num_credit_yes/number_yes)*buy_yes; double nb_buy_no = (1.0*num_age_no/bumber_no)*(1.0*num_income_no/bumber_no)*(1.0*num_stdent_no/bumber_no)*(1.0*num_credit_no/bumber_no)*buy_no; System.out.println ("Wahrscheinlichkeit der neuen Benutzer zu kaufen:"+nb_buy_yes); System.out.println ("Wahrscheinlichkeit der neuen Benutzer, nicht zu kaufen:"+nb_buy_no); if (nb_buy_yes> nb_buy_no) {System.out.println ("Wahrscheinlichkeit der neuen Benutzer, nicht zu kaufen"); } else {System.out.println ("Wahrscheinlichkeit von neuen Benutzern, nicht zu kaufen"); }}}Für Beispieldaten:
25 hohe nein faire nein
25 hoch ohne ausgezeichnete Nein
33 hoch Nein Nein Fair Ja
41 Medium nein fair ja
41 niedrig ja fair ja
41 niedrig ja ausgezeichnet nein
33 niedrig ja ausgezeichnet ja
25 Medium nein fair nein
25 niedrig ja fair ja
41 mittel ja fair ja
25 mittel ja ausgezeichnet ja
33 Medium nein ausgezeichnet ja
33 High ja fair ja
41 Medium kein ausgezeichnetes Nein
Ergebnisse für unbekannte Benutzerdaten:
Anzahl der Einkäufe: 9
Keine Geschichte des Kaufs: 5
Kauf +Alter: 2
Kaufen Sie nicht +Alter: 3
Kauf +Einkommen: 4
Kaufen Sie nicht +Einkommen: 2
Kauf +Stundent: 6
Kaufen Sie nicht +Schüler: 1
Kaufen + Kredit: 6
Kaufen Sie nicht + Kredit: 2
Wahrscheinlichkeit des Kaufs in Schulungsdaten: 0,6428571428571429
Die Wahrscheinlichkeit, die Schulungsdaten nicht einzukaufen: 0,35714285714285715
Die Wahrscheinlichkeit, dass neue Benutzer kaufen: 0.028218694885361547
Die Wahrscheinlichkeit, dass neue Benutzer nicht kaufen: 0.006857142857142858
Neue Benutzer haben eine hohe Kaufwahrscheinlichkeit
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.