В этой статье описывается наивный алгоритм Байеса, реализованный в Java. Поделитесь этим для вашей ссылки, следующим образом:
Я считаю, что молодые люди, которые делают системы интеллектуального анализа и рекомендаций, знакомы с наивным алгоритмом Байеса, поэтому я не буду говорить о принципах алгоритма. В основном я хочу реализовать алгоритм наивного Байеса через код Java, и идея такова:
1. Используйте Javabean +ArrayList для хранения данных
2. Для образца обучения данных
Конкретный код заключается в следующем:
пакет nb;/** * Свойства обучающих образцов Javabean * */public class javabean {int age; Струнный доход; String Student; String credit_rating; String buys_computer; public javabean () {} public javabean (int возраст, строковый доход, String Student, String credit_rating, String buys_computer) {this.age = age; this.comome = доход; this.student = студент; 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 () {return outment;} public void setincome (String rescome) {this.Income = restud) this.student = student;} public String getCredit_Rating () {return credit_rating;} public void setcredit_rating (string credit_rating) {this.credit_rating = credit_rating;} public String_computer () {return buys_computer;} public setbuys_computer (string {string uscomputer (string) this.buys_computer = buys_computer;}@overridepublic string toString () {return "javabean [age =" + age + ", доход =" + доход + ", студент =" + студент + ", credit_rating =" + credit_rating + ", buys_computer =" + buys_computer + "]";Алгоритм внедряет часть:
Пакет nb; импорт java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.util.arraylist; открытый класс testnb { / ** data_length*Мысли об алгоритме* / public Static ArrayList <javabean> list = new ArrayList <Javabean>; static int data_length = 0; public static void main (string [] args) {// 1. Прочитать данные и поместите его в файл файла контейнера списка = новый файл ("E: //test.txt"); txt2string (файл); // образец теста данных TestData (25, «Средний», «Да», «Fair»); } // Читать образцы данных public static void txt2string (файл файла) {try {bufferedReader br = new BufferedReader (new FileReader (файл)); // Создание класса BufferedReader для чтения файла строки s = null; while ((s = br.readline ())! = null) {// Использовать метод чтения, чтобы прочитать одну строку за раз data_length ++; Splitt (ы); } br.close (); } catch (Exception e) {e.printstackTrace (); }} // Сохранить в 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 = новый Javabean (возраст, ABC [1], ABC [2], ABC [3], ABC [4]); list.add (bean); } // ОБРАЗОВАНИЕ ОБРАЗОВАНИЯ, TEST Public Static void TestData (int Age, String A, String B, String C) {// ОБРАЗОВАНИЕ int number_yes = 0; int bucket_no = 0; // количество возрастных случаев int num_age_yes = 0; int num_age_no = 0; // доход int num_income_yes = 0; int num_income_no = 0; // Студент int num_student_yes = 0; int num_stdent_no = 0; // credit int num_credit_yes = 0; int num_credit_no = 0; // список путешествий, чтобы получить данные для (int i = 0; i <list.size (); i ++) {javabean bb = list.get (i); if (bb.getbuys_computer (). equals ("yes")) {// ay number_yes ++; if (bb.getincome (). equals (a)) {// доход num_income_yes ++; } if (bb.getStudent (). equals (b)) {// Student num_student_yes ++; } if (bb.getcredit_rating (). equals (c)) {// credit num_credit_yes ++; } if (bb.getage () == age) {// age num_age_yes ++; }} else {// no bumber_no ++; if (bb.getincome (). equals (a)) {// доход num_income_no ++; } if (bb.getStudent (). equals (b)) {// Студент num_stdent_no ++; } if (bb.getcredit_rating (). equals (c)) {// credit num_credit_no ++; } if (bb.getage () == age) {// age num_age_no ++; }}} System.out.println ("Количество покупок:"+number_yes); System.out.println («Количество не купленной истории:»+bumber_no); System.out.println ("buy+age:"+num_age_yes); System.out.println ("buy+rate:"+num_age_no); System.out.println ("buy+rate:"+num_income_yes); System.out.println ("buy+rate:"+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 ("buy+credit:"+num_credit_yes); System.out.println ("buy+credit:"+num_credit_no); //// вероятность суждения double buy_yes = number_yes*1.0/data_length; // Вероятность купить двойной buy_no = bumber_no*1.0/data_length; // Вероятность не покупать System.out.println («Вероятность купить данные в учебных данных:»+buy_yes); System.out.println («Вероятность купить вероятность обучения данных:»+buy_no); /// Неизвестный двойной пользователь 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/number_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 («Вероятность покупки новых пользователей:«+nb_buy_yes); System.out.println («Вероятность того, что новые пользователи не покупают:»+nb_buy_no); if (nb_buy_yes> nb_buy_no) {System.out.println («Вероятность того, что новые пользователи не покупают»); } else {System.out.println («Вероятность того, что новые пользователи не покупают»); }}}Для образца данных:
25 высок не справедливо нет
25 высок нет отлично нет
33 Высоко не справедливо да
41 Средняя не справедливо да
41 Низкий да ярмарка да
41 низкий да, отлично нет
33 низкий да, отлично да, да
25 Средний нет справедливо нет
25 низкий да честный да
41 Средний да, ярмарка да
25 среднего да, отлично да, да
33 Средняя нет отлично да
33 Высоко да ярмарка да
41 Средний нет отлично нет
Результаты для неизвестных пользовательских данных:
Количество покупок: 9
Нет истории не покупать: 5
Покупка +возраст: 2
Не покупайте +возраст: 3
Покупка +доход: 4
Не покупайте +доход: 2
Покупка +приличный: 6
Не покупайте +студент: 1
Купить + кредит: 6
Не покупайте + кредит: 2
Вероятность покупки в учебных данных: 0,6428571428571429
Вероятность не покупать в учебных данных: 0,35714285714285715
Вероятность покупки новых пользователей: 0,028218694885361547
Вероятность того, что новые пользователи не покупают: 0,006857142857142858
Новые пользователи имеют высокую вероятность покупки
Для получения дополнительной информации об алгоритмах Java, читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.