تصف هذه المقالة خوارزمية Bayes الساذجة التي تم تنفيذها في Java. شاركه للرجوع إليه ، على النحو التالي:
أعتقد أن الشباب الذين يقومون بتعدين البيانات والتوصيات على دراية بخوارزمية Bayes الساذجة ، لذلك لن أتحدث عن مبادئ الخوارزمية. أريد بشكل أساسي تنفيذ خوارزمية Bayes الساذجة من خلال كود Java ، والفكرة هي:
1. استخدم Javabean +ArrayList لتدريب بيانات التدريب
2. لتدريب البيانات
الرمز المحدد كما يلي:
Package nb ؛/** * خصائص عينات التدريب Javabean * */الفئة العامة Javabean {int Age ؛ دخل السلسلة طالب سلسلة string credit_rating ؛ سلسلة buys_computer ؛ Javabean العامة () {} Javabean العامة (int age ، دخل السلسلة ، طالب السلسلة ، string credit_rating ، سلسلة buys_computer) {this.age = age ؛ this.INCOME = الدخل ؛ 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 ؛ this.student = student ؛} السلسلة العامة getCredit_rating () {return credit_rating ؛} public void setCredit_Rating (string credit_rating) {this.credit_rating = credit_rating ؛ string public getBuys_Computer () {return buys_computer ؛ this.buys_computer = buys_computer ؛}@orgridepublic string toString () {return "javabean [Age =" + Age + "، deters =" + deult + "، student =" + student + "، credit_rating =" + credit_ "جزء تنفيذ الخوارزمية:
Package nb ؛ import java.io.bufferedreader ؛ import java.io.file ؛ import java.io.filereader ؛ import java.util.arraylist ؛ public class testnb { / ** data_length*أفكار الخوارزمية* / public static arraylist <javabean> ثابت int data_length = 0 ؛ public static void main (string [] args) {// 1. اقرأ البيانات ووضعها في ملف حاوية القائمة = ملف جديد ("e: //test.txt") ؛ Txt2String (ملف) ؛ // Data Test Sample TestData (25 ، "Medium" ، "Yes" ، "Fair") ؛ }. بينما ((s = br.readline ())! = null) {// استخدم طريقة readline لقراءة سطر واحد في time data_length ++ ؛ Splitt (s) ؛ } br.close () ؛ } catch (استثناء 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 = 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) {// training sample int_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 ؛ // 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 (). يساوي ("نعم")) {// yes number_yes ++ ؛ if (bb.getincome (). يساوي (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 ++ ؛ }} آخر {// no bumber_no ++ ؛ if (bb.getincome (). يساوي (a)) {// الدخل 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 ("buy+الدخل:"+num_age_no) ؛ System.out.println ("buy+الدخل:"+num_income_yes) ؛ System.out.println ("buy+الدخل:"+num_income_yes) ؛ System.out.println ("buy+stund:"+num_student_yes) ؛ System.out.println ("buy+student:"+num_stdent_no) ؛ System.out.println ("buy+stund:"+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 ؛ // احتمالية شراء double 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)*( 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 ("احتمال عدم شراء المستخدمين الجدد") ؛ } آخر {system.out.println ("احتمال عدم شراء المستخدمين الجدد") ؛ }}}لعينة البيانات:
25 عالية لا عادل لا
25 عالية لا ممتازة لا
33 عالية لا عادل نعم
41 متوسطة لا عادل نعم
41 LOW YES FAIR YES
41 منخفضة نعم ممتاز لا
33 منخفضة نعم ممتازة
25 متوسط لا عادل لا
25 LOW YES FAIR YES
41 متوسط نعم عادل نعم
25 متوسط نعم ممتاز نعم
33 متوسطة لا ممتازة نعم
33 High Yes Fair Yes
41 متوسطة لا ممتاز لا
نتائج بيانات المستخدم غير المعروفة:
عدد المشتريات: 9
لا يوجد تاريخ لعدم الشراء: 5
شراء +العمر: 2
لا تشتري +العمر: 3
شراء +الدخل: 4
لا تشتري +الدخل: 2
شراء +stund: 6
لا تشتري +الطالب: 1
شراء + الائتمان: 6
لا تشتري + الائتمان: 2
احتمال الشراء في بيانات التدريب: 0.6428571428571429
احتمال عدم الشراء في بيانات التدريب: 0.35714285714285715
احتمال شراء المستخدمين الجدد: 0.028218694885361547
احتمال عدم شراء المستخدمين الجدد: 0.006857142857142858
المستخدمون الجدد لديهم احتمال كبير للشراء
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.