この記事では、Javaに実装された素朴なベイズアルゴリズムについて説明します。次のように、参照のために共有してください。
データマイニングと推奨システムを行う若い男性は、ナイーブベイズアルゴリズムに精通しているため、アルゴリズムの原則については話さないと思います。私は主にJavaコードを介してNaive Bayesアルゴリズムを実装したいと考えていますが、そのアイデアは次のとおりです。
1.データストレージをトレーニングするには、Javabean +ArrayListを使用します
2。サンプルデータトレーニング用
特定のコードは次のとおりです。
パッケージnb;/** *トレーニングサンプルのプロパティjavabean * */public class javabean {int age;文字列収入;文字列学生;文字列credit_rating;文字列buys_computer; public javabean(){} public javabean(int age、string Income、string student、string credit_rating、string buys_computer){this.age = age; this.income = Income; this.student = desutent; 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 incume;} public void setincome(string Income = Income = Income;} public String getStud() this.student = sudine;} 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_comuter( this.buys_computer = buys_computer;}@overridepublic string toString(){return "javabean [age =" + age + "、Income =" + Income + "、Student =" + Student + "、Credit_rating =" + Credit_rating + "、buys_computer ="アルゴリズムの実装パーツ:
パッケージnb; import java.io.bufferedreader; Import java.io.file; Import java.io.filereader; Import java.util.arraylist; public class testnb { / ** data_length*Algorithm* / public Static Arraylist <Javabean> list = New ArrayList <Javabean>静的int data_length = 0; public static void main(string [] args){//1。データを読み取り、リストコンテナfile = new file( "e://test.txt"); txt2string(file); //データテストサンプルTestData(25、 "medium"、 "yes"、 "fair"); } //サンプルデータを読み取るpublic static void txt2string(file file){try {bufferedreader br = new bufferedReader(new fileReader(file)); // bufferedReaderクラスを構築してファイル文字列s = nullを読み取ります。 while((s = br.readline())!= null){// readlineメソッドを使用して、一度に1つの行を読み取りますdata_length ++; splitt(s); } 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 = new Javabean(Age、ABC [1]、ABC [2]、ABC [3]、ABC [4]); list.add(bean); } //トレーニングサンプル、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; // Student int num_student_yes = 0; int num_stdent_no = 0; //クレジット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")){// yes number_yes ++; if(bb.getincome()。equals(a)){// Income 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)){// Income num_income_no ++; } if(bb.getStudent()。equals(b)){// Student 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( "購入+収入:"+num_age_no); System.out.println( "購入+収入:"+num_income_yes); System.out.println( "購入+収入:"+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( "購入+クレジット:"+num_credit_yes); System.out.println( "購入+クレジット:"+num_credit_no); ////確率判断double buy_yes = number_yes*1.0/data_length; //確率購入double buy_no = bumber_no*1.0/data_length; // system.out.out.printlnを購入しない確率( "トレーニングデータの購入確率:"+buy_yes); System.out.println( "トレーニングデータの購入確率:"+buy_no); ///不明なユーザーの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) 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 Low Yes Fairはい
41 Low Yes Excellent No
33低いはいはいはい
25ミディアムノーフェアいいえ
25 LOW YES FAIRはい
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ノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。