Cet article décrit l'algorithme naïf de Bayes mis en œuvre dans Java. Partagez-le pour votre référence, comme suit:
Je crois que les jeunes hommes qui font des systèmes d'exploration de données et de recommandation connaissent l'algorithme naïf de Bayes, donc je ne parlerai pas des principes de l'algorithme. Je veux principalement implémenter l'algorithme naïf de Bayes via Java Code, et l'idée est:
1. Utilisez JavaBean + ArrayList pour la formation du stockage de données
2. Pour une formation sur les données de l'échantillon
Le code spécifique est le suivant:
Package NB; / ** * Propriétés des échantillons de formation JavaBean * * / classe publique JavaBean {int Age; Revenus de cordes; Étudiant à cordes; String Credit_Rating; String buys_computer; public JavaBean () {} public JavaBean (int Age, String revenu, String Student, String Credit_Rating, String buys_computer) {this.age = age; this.income = revenu; this.Student = étudiant; this.credit_rating = Credit_rating; this.buys_computer = buys_computer;} public int getage () {return age;} public void setage (int age) {this.age = age;} public String getincome () {revenu revenu;} public void setincome (revenu de chaîne) {this.income = revenu;} public string student () {} student;} public SetStud (String string getStudent () {return étudiant;} public SetStud (String String) this.Student = Student;} public String getCredit_rating () {return Credit_rating;} public void SetCredit_Rating (String Credit_rating) {this.credit_rating = Credit_Rating;} public String getBuys_Computer () {return buys_computer) this.buys_computer = buys_computer;} @ overRidepublic String toString () {return "javabean [Âge =" + age + ", revenu =" + revenu + ", student =" + student + ", Credit_rating =" + Credit_Rating + ", GUYS_COMPUTER =" + buys_computer + "]";}}La pièce d'implémentation de l'algorithme:
package nb; importer java.io.bufferedReader; import java.io.file; import java.io.fileReader; import java.util.arrayList; public class testnb {/ ** data_length * pensées algorithm * / public static arrayList <Javabean> list = new ArrayList <Javabean> (public static arrayList <Javabean> list = new ArrayList <Javabean> (public static ArrayList <Javabean> list = new ArrayList <Javabean> (public static ArrayList <Javabean> List = New ArrayList <Javabean> () ;; static int data_length = 0; public static void main (String [] args) {// 1. Lisez les données et les mettez dans le fichier de conteneur de liste = nouveau fichier ("e: //test.txt"); txt2String (fichier); // Exemple de test de données TestData (25, "Medium", "Oui", "Fair"); } // Lire les exemples de données publiques static void txt2String (fichier file) {try {buttereDreader br = new BuffereDader (new FileReader (fichier)); // construire une classe BuffereDreader pour lire la chaîne de fichier s = null; while ((s = br.readline ())! = null) {// Utilisez la méthode de lecture pour lire une ligne à un time data_length ++; Splitt (s); } br.close (); } catch (exception e) {e.printStackTrace (); }} // Enregistrer dans ArrayList public static void SplitT (String str) {String strr = str.trim (); String [] ABC = strr.split ("[// p {espace}] +"); int Age = Integer.ParseInt (ABC [0]); Javabean Bean = New Javabean (Age, ABC [1], ABC [2], ABC [3], ABC [4]); list.add (bean); } // Échantillon de formation, test public static void testData (Int Age, String A, String B, String C) {// Training Sample int Number_yes = 0; int backet_no = 0; // le nombre de cas d'âge int num_age_yes = 0; int num_age_no = 0; // revenu int num_income_yes = 0; int num_income_no = 0; // étudiant int num_student_yes = 0; int num_stdent_no = 0; // Credit int num_credit_yes = 0; int num_credit_no = 0; // Liste de voyage pour obtenir des données pour (int i = 0; i <list.size (); i ++) {javabean bb = list.get (i); if (bb.getBuys_Computer (). equals ("oui")) {// oui numéro_yes ++; if (bb.getIncome (). égal (a)) {// revenu num_income_yes ++; } if (bb.getStudent (). égal (b)) {// étudiant num_student_yes ++; } if (bb.getCredit_rating (). equals (c)) {// Credit num_credit_yes ++; } if (bb.getage () == age) {// Âge num_age_yes ++; }} else {// no bumber_no ++; if (bb.getIncome (). égal (a)) {// revenu num_income_no ++; } if (bb.getStudent (). égal (b)) {// étudiant num_stdent_no ++; } if (bb.getCredit_rating (). equals (c)) {// Credit num_credit_no ++; } if (bb.getage () == age) {// Âge num_age_no ++; }}} System.out.println ("Le nombre d'achats:" + nombre_yes); System.out.println ("Le nombre d'historique non acheté:" + bumber_no); System.out.println ("Acheter + Age:" + num_age_yes); System.out.println ("acheter + revenu:" + num_age_no); System.out.println ("acheter + revenu:" + num_income_yes); System.out.println ("acheter + revenu:" + num_income_yes); System.out.println ("acheter + Stundant:" + num_student_yes); System.out.println ("acheter + étudiant:" + num_stdent_no); System.out.println ("acheter + Stundant:" + num_stdent_no); System.out.println ("acheter + crédit:" + num_credit_yes); System.out.println ("acheter + crédit:" + num_credit_no); //// juge de probabilité double buy_yes = numéro_yes * 1.0 / data_length; // Probabilité Achat Double Buy_NO = BUMBER_NO * 1.0 / data_length; // Probabilité de ne pas acheter System.out.println ("Acheter la probabilité dans les données de formation:" + acheter_yes); System.out.println ("Acheter la probabilité dans les données de formation:" + acheter_no); /// Double NB_Buy_yes de l'utilisateur inconnu = (1.0 * num_age_yes / nombre_yes) * (1.0 * num_income_yes / numéro_yes) * (1.0 * num_student_yes / numéro_yes) * (1.0 * num_credit_yes / numéro_yes) * (1.0 * num_credit_yes / numéro_yes) * (1.0 * num_credit_yes / numéro_yes) * (1.0 * num_credit_yes / numéro_yes) * (1.0 * num_credit_yes / numéro_yes) * (1.0 * 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 ("Probabilité des nouveaux utilisateurs à acheter:" + nb_buy_yes); System.out.println ("Probabilité de nouveaux utilisateurs à ne pas acheter:" + nb_buy_no); if (nb_buy_yes> nb_buy_no) {System.out.println ("Probabilité de nouveaux utilisateurs à ne pas acheter"); } else {System.out.println ("Probabilité de nouveaux utilisateurs à ne pas acheter"); }}}Pour les exemples de données:
25 high non juste non
25 high non excellent non
33 haut non juste oui
41 Medium Non Fair Oui
41 LOW OUI FAIR OUI
41 Low Oui Excellent Non
33 bas Oui Excellent oui
25 médium Non Fair Non
25 bas Oui Fair Oui
41 Medium oui juste oui
25 moyens oui excellent oui
33 médium non excellent oui
33 haut oui juste oui
41 Medium Non excellent non
Résultats pour les données utilisateur inconnues:
Nombre d'achats: 9
Pas d'histoire de ne pas acheter: 5
Achat + âge: 2
N'achetez pas + âge: 3
Achat + Revenu: 4
N'achetez pas + revenu: 2
Achat + Studdent: 6
N'achetez pas + étudiant: 1
Acheter + crédit: 6
N'achetez pas + crédit: 2
Probabilité d'achat dans les données de formation: 0,6428571428571429
Probabilité de ne pas acheter dans les données de formation: 0,35714285714285715
La probabilité d'achat des nouveaux utilisateurs: 0,028218694885361547
La probabilité que les nouveaux utilisateurs n'achètent pas: 0,006857142857142858
Les nouveaux utilisateurs ont une forte probabilité d'achat
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.