朴素貝葉斯分類器 (Naive Bayes Classifier) python實現


簡單實現來自b站大神的視頻講解:https://www.bilibili.com/video/BV1qs411a7mT

詳情可以看視頻鏈接,講的非常好。

 1 # coding=utf-8
 2 from __future__ import division  3 from numpy import array  4 
 5 def naive_bs(failed_number, drunk_number, shopping_number, study_number, expected_drunk, expected_shopping, expected_study):  6 
 7     ex_failed = 0  8     ex_not_failed = 0  9 
10     for i in range(0, len(failed_number)): 11         if study_number[i] == 0: 12             ex_failed = ex_failed + 1
13         elif study_number[i] == 1: 14             ex_not_failed = ex_not_failed + 1
15 
16     # 統計p(x?|y)出現的概率
17     # 計算不同情況
18     aa = 0 19     bb = 0 20     for i in range(0, len(drunk_number)): 21         if expected_drunk == drunk_number[i] and failed_number[i] == 1: 22             aa = aa + 1
23         elif expected_drunk == drunk_number[i] and failed_number[i] == 0: 24             bb = bb + 1
25     p_aa = aa / ex_failed #x1|y x1=0,y=1
26     p_bb = bb / ex_not_failed#x1|y x1=0,y=0
27 
28     aaa = 0 29     bbb = 0 30 
31     for i in range(0, len(shopping_number)): 32         if expected_shopping == shopping_number[i] and failed_number[i] == 1: 33             aaa = aaa + 1
34         elif expected_shopping == shopping_number[i] and failed_number[i] == 0: 35             bbb = bbb + 1
36     p_aaa = aaa / ex_failed 37     p_bbb = bbb / ex_not_failed 38 
39     a4 = 0 40     b4 = 0 41     for i in range(0, len(study_number)): 42         if expected_study == study_number[i] and failed_number[i] == 1: 43             a4 = a4 + 1
44         elif expected_study == study_number[i] and failed_number[i] == 0: 45             b4 = b4 + 1
46     p_a4 = a4 / ex_failed 47     p_b4 = b4 / ex_not_failed 48 
49     # print("aa:%s , aaa=%s a4=%s" % ( aa,aaa,a4))
50     # print("p_aa:%s , aaa=%s a4=%s" % (p_aa, p_aaa, p_a4))
51     # print("bb:%s , bbb=%s b4=%s" % (bb, bbb, b4))
52     # print("p_bb:%s , bbb=%s b4=%s" % (p_bb, p_bbb, p_b4))
53     final_failed_p = p_aa * p_aaa* p_a4 * ex_failed / len(failed_number) 54     final_not_p = p_bb * p_bbb * p_b4* ex_not_failed / len(failed_number) 55     print("掛科的概率=%s"%(final_failed_p)) 56     print("不掛科的概率=%s"%(final_not_p)) 57     if final_not_p>final_not_p: 58         print("預測會掛科") 59     else: 60         print("預測不會掛科") 61 
62 
63 if __name__ == "__main__": 64     failed_number = [1, 0, 0, 1, 1, 0, 0, 1] 65     drunk_number = [1, 0, 1, 1, 0, 0, 0, 0] 66     shopping_number=[1, 0, 0, 0, 1, 1, 1, 0] 67     study_number = [0, 1, 1, 0, 0, 1, 0, 1] 68 
69     expected_drunk = 0 70     expected_shopping = 0 71     expected_study = 1
72     #不喝酒 不逛街 學習 的掛科概率
73     print(drunk_number, study_number, shopping_number) 74  naive_bs(failed_number, drunk_number, shopping_number,study_number, 75              expected_drunk, expected_shopping,expected_study)

代碼和自己做的PPT百度雲鏈接:

鏈接:https://pan.baidu.com/s/1WKn9sY295Qp9JSn3It0yxg
提取碼:23cd
復制這段內容后打開百度網盤手機App,操作更方便哦--來自百度網盤超級會員V5的分享

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM