ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

朴素贝叶斯分类器 (Naive Bayes Classifier) python实现

2020-11-03 21:34:09  阅读:330  来源: 互联网

标签:drunk python Naive number 分类器 failed ex expected study


简单实现来自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的分享

 

标签:drunk,python,Naive,number,分类器,failed,ex,expected,study
来源: https://www.cnblogs.com/fudanxi/p/13922673.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有