Este artículo describe el algoritmo Naive Bayes implementado en Java. Compártelo para su referencia, como sigue:
Creo que los hombres jóvenes que realizan sistemas de minería y recomendación de datos están familiarizados con el algoritmo Naive Bayes, por lo que no hablaré sobre los principios del algoritmo. Principalmente quiero implementar el algoritmo Naive Bayes a través del código Java, y la idea es:
1. Use Javabean +ArrayList para el almacenamiento de datos de capacitación
2. Para entrenamiento de datos de muestra
El código específico es el siguiente:
paquete nb;/** * Propiedades de muestras de entrenamiento Javabean * */public class javabean {int Age; Ingresos de cadena; Estudiante de cuerda; Cadena credit_rating; String Buys_Computer; public javabean () {} public Javabean (int Age, String Income, String Student, String Credit_Rating, String Buys_Computer) {this.age = Age; this.income = ingreso; this.student = estudiante; this.credit_rating = Credit_Rating; this.Buys_Computer = buys_computer;} public int getAge () {return Age;} public void setAge (int a age) {this.age = age;} public String getincome () {return ingreso;} public void setIncome (string ingreso) {this.income = ingreso;} public string getStudent () {return student;} void setincome) 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;}public void setBuys_computer(String buys_computer) { this.Buys_Computer = buys_computer;}@overridePublic string toString () {return "javabean [age =" + age + ", ingreso =" + ingreso + ", student =" + student + ", credit_rating =" + credit_rating + ", buys_computer =" + buys_computer + "]";}}La parte de implementación del algoritmo:
paquete nb; import java.io.bufferedReader; import java.io.file; import java.io.filereader; import java.util.arrayList; public class testnb { / ** data_length*pensamientos de algorithm* / public static arrayList <Javabean> list = new ArrayList <JAVABean> ();); static int data_length = 0; public static void main (string [] args) {// 1. Lea datos y póngalo en el archivo de contenedor de la lista Archivo = nuevo archivo ("e: //test.txt"); txt2string (archivo); // Test Data TestData (25, "Medio", "Sí", "Justo"); } // leer datos de muestra public static void txt2string (archivo archivo) {try {bufferedReader br = new BufferedReader (new FileReader (archivo)); // Construye una clase de BufferedReader para leer la cadena de archivo S = null; while ((s = br.readline ())! = NULL) {// Use el método Readline para leer una línea a tiempo data_length ++; Splitt (s); } br.close (); } catch (Exception e) {E.PrintStackTrace (); }} // Guardar en ArrayList public static void splitt (String str) {String strr = str.trim (); String [] abc = strr.split ("[// p {space}]+"); int age = Integer.ParseInt (ABC [0]); Javabean Bean = New Javabean (Age, ABC [1], ABC [2], ABC [3], ABC [4]); list.add (frijol); } // Muestra de entrenamiento, prueba public static void testData (int Age, String A, String B, String C) {// Sample de entrenamiento int number_yes = 0; int bucket_no = 0; // El número de casos de edad int num_age_yes = 0; int num_age_no = 0; // ingreso int num_income_yes = 0; int num_income_no = 0; // estudiante int num_student_yes = 0; int num_stdent_no = 0; // crédito int num_credit_yes = 0; int num_credit_no = 0; // Lista de viajes para obtener datos para (int i = 0; i <list.size (); i ++) {javabean bb = list.get (i); if (bb.getBuys_Computer (). Equals ("Yes")) {// sí Number_yes ++; if (bb.getincome (). igual (a)) {// ingreso num_income_yes ++; } if (bb.getStudent (). Equals (b)) {// estudiante num_student_yes ++; } if (bb.getCredit_rating (). Equals (c)) {// crédito num_credit_yes ++; } if (bb.getage () == edad) {// edad num_age_yes ++; }} else {// sin bumber_no ++; if (bb.getincome (). igual (a)) {// ingreso num_income_no ++; } if (bb.getStudent (). Equals (b)) {// estudiante num_stdent_no ++; } if (bb.getCredit_rating (). Equals (c)) {// crédito num_credit_no ++; } if (bb.getage () == edad) {// edad num_age_no ++; }}} System.out.println ("El número de compras:"+number_yes); System.out.println ("El número de historial no comprado:"+bumber_no); System.out.println ("Buy+Age:"+num_age_yes); System.out.println ("Buy+Income:"+num_age_no); System.out.println ("Buy+Income:"+num_income_yes); System.out.println ("Buy+Income:"+num_income_yes); System.out.println ("buy+stundent:"+num_student_yes); System.out.println ("Buy+Student:"+num_stdent_no); System.out.println ("buy+stundent:"+num_stdent_no); System.out.println ("Comprar+Crédito:"+num_credit_yes); System.out.println ("Comprar+crédito:"+num_credit_no); //// juicio de probabilidad doble buy_yes = número_yes*1.0/data_length; // compra de probabilidad doble buy_no = bumber_no*1.0/data_length; // Probabilidad de no comprar System.out.println ("Comprar probabilidad en los datos de capacitación:"+buy_yes); System.out.println ("Comprar probabilidad en los datos de capacitación:"+buy_no); /// Double NB_BUY_YES = (1.0*NUM_AGE_YES/NUMER_YES)*(1.0*num_income_yes/number_yes)*(1.0*num_student_yes/number_yes)*(1.0*num_creditit_yes/number_yes)*(1.0*num_yes/number_yes)*buy_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 ("Probabilidad de los nuevos usuarios para comprar:"+nb_buy_yes); System.out.println ("Probabilidad de los nuevos usuarios para no comprar:"+nb_buy_no); if (nb_buy_yes> nb_buy_no) {system.out.println ("probabilidad de que los nuevos usuarios no compraran"); } else {System.out.println ("Probabilidad de que los nuevos usuarios no compraran"); }}}Para datos de muestra:
25 Alto No Feria No
25 alto no excelente no
33 Alto No Fair Sí
41 medianos no justo si
41 bajo si justo si
41 bajo sí excelente no
33 bajo si excelente sí
25 Medium No Fair No
25 bajo si justo si
41 mediano si justo si
25 medianos si excelente si
33 medianos no excelente si
33 Alto sí Fair Sí
41 mediano no excelente no
Resultados para datos de usuario desconocidos:
Número de compras: 9
Sin antecedentes de no comprar: 5
Compra +edad: 2
No compre +edad: 3
Compra +Ingresos: 4
No compre +ingresos: 2
Compra +estundado: 6
No compre +estudiante: 1
Comprar + crédito: 6
No compre + Crédito: 2
Probabilidad de comprar en datos de capacitación: 0.6428571428571429
Probabilidad de no comprar en datos de capacitación: 0.35714285714285715
La probabilidad de comprar nuevos usuarios: 0.028218694885361547
La probabilidad de que los nuevos usuarios no compren: 0.006857142857142858
Los nuevos usuarios tienen una alta probabilidad de comprar
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.