给定一个训练集Training-data.txt,构建朴实贝叶斯分类器,并对如下测试用例作出推断:

X1 = (age <=30, Income = medium, Student = yes, Credit_rating = Fair)
X2 = (30<= age <40, Income = high, Student = no, Credit_rating = Fair)
X3 = (age > 40, Income = medium, Student = no, Credit_rating = Fair)

training-data.txt:

age income  student credit_rating   buys_computer
<=30    high    no  fair    no
<=30    high    no  excellent   no
31…40   high    no  fair    yes
>40 medium  no  fair    yes
>40 low yes fair    yes
>40 low yes excellent   no
31…40   low yes excellent   yes
<=30    medium  no  fair    no
<=30    low yes fair    yes
>40 medium  yes fair    yes
<=30    medium  yes excellent   yes
31…40   medium  no  excellent   yes
31…40   high    yes fair    yes
>40 medium  no  excellent   no

解题思路:首先读入训练数据,使用朴素贝叶斯分类来预测未知元组的类标号。利用列表存储各个类标号属性的数目,可以得出P(x|c)P(c),从而预测未知元组的类标号
以下是python代码实现过程:

train_file=open('training-data.txt','r')
train_list=[]
lines=train_file.readlines()
for i in lines:curdata=i.strip().split('\t')train_list.append(curdata)
del[train_list[0]]
for i in train_list:if i[0]=='31\xa1\xad40':i[0]='31_40'
print train_list
yes_count=0
no_count=0for  i in range(len(train_list)):if train_list[i][len(train_list[i])-1]=='yes':yes_count+=1else:no_count+=1
#print yes_count,no_count
p_yes=round(yes_count/float(len(train_list)),3)
p_no=round(no_count/float(len(train_list)),3)def bayes(age_data,income_data,isstudent,cr_data):x=list()x=[age_data,income_data,isstudent,cr_data]x_yes=[0,0,0,0]x_no=[0,0,0,0]for i in range(len(train_list)):for j in range(0,len(train_list[i])-1):if train_list[i][j]==x[j]:if train_list[i][len(train_list[i])-1]=='yes':temp=x_yes[j]temp+=1x_yes[j]=tempelse:temp=x_no[j]temp+=1x_no[j]=temp a=1for i in x_yes:a*=ib=1for i in x_no:b*=i p_x_yes=a/float(yes_count**4)p_x_no=b/float(no_count**4)fina_p_yes=round(p_x_yes*p_yes,3)print 'P(X|buy_computer=yes)=',fina_p_yesfina_p_no=round(p_x_no*p_no,4)print 'P(X|buy_computer=no)=',fina_p_noclass_result=""if fina_p_yes>fina_p_no:class_result="it belongs to this class:yes"else:class_result="it belongs to this class:no"return class_resultprint bayes('<=30','medium','yes','fair')
print bayes('31_40','high','no','fair')

下图为实验结果截图:

python实现之构建朴实贝叶斯分类器相关推荐

  1. python机器学习库sklearn——朴素贝叶斯分类器

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 文档贝叶斯分类器的相关的知 ...

  2. Python小案例:朴素贝叶斯分类器

    朴素贝叶斯分类器是一个以贝叶斯定理为基础,广泛应用于情感分类领域的优美分类器.本文我们尝试使用该分类器来解决上一篇文章中影评态度分类. 1.贝叶斯定理 假设对于某个数据集,随机变量C表示样本为C类的概 ...

  3. python机器学习案例系列教程——文档分类器,朴素贝叶斯分类器,费舍尔分类器

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 github地址:https://github.com/626626cdllp/data-mining/tree/master/Bay ...

  4. python 贝叶斯分类器sklearn_Sklearn 中的朴素贝叶斯分类器

    原标题:Sklearn 中的朴素贝叶斯分类器 作者:Martin Müller,翻译:github-sisibeloved https://github.com/xitu/gold-miner/blo ...

  5. 机器学习之用Python从零实现贝叶斯分类器

    机器学习之用Python从零实现贝叶斯分类器 2015/02/06 · 系列教程 · 13 评论 · 机器学习 分享到:27 本文由 伯乐在线 - Halal 翻译,toolate 校稿.未经许可,禁 ...

  6. python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...

    Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...

  7. 利用Python实现多元伯努利事件的朴素贝叶斯分类器

    前言 本篇博客所写的算法对应于吴恩达教授的机器学习教程里的多元伯努利事件模型的朴素贝叶斯. 多元伯努利事件模型的Python代码 #!/usr/bin/env python # -*- coding: ...

  8. python 贝叶斯分类器sklearn_使用sklearn自带的贝叶斯分类器进行文本分类和参数调优...

    数据挖掘入门与实战 公众号: datadw Part 1: 本篇内容简介 在前一篇文章完整手写一个朴素贝叶斯分类器,完成文本分类,我们使用首先假设在文档中出现的单词彼此独立,利用贝叶斯定理,完成了一个 ...

  9. 吴裕雄 python 机器学习——多项式贝叶斯分类器MultinomialNB模型

    import numpy as np import matplotlib.pyplot as pltfrom sklearn import datasets,naive_bayes from skle ...

最新文章

  1. 适合初学者的数据结构_数据结构101:图-初学者的直观介绍
  2. Android获取顶部状态栏statusBar高度、底部导航栏navigationBar高度
  3. C++ auto关键字
  4. webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
  5. android resolvesize方法,Android 自定义View中onMeasure()中使用resolveSize()是什么意思?
  6. [css] 怎么设置可点击的元素上强制手型?
  7. 轻松学DDD之二:如何高效消化知识
  8. SQL中Case的使用方法(上篇)
  9. 【今日CV 计算机视觉论文速览 第144期】Wed, 17 Jul 2019
  10. python算p值_Python sklearn-如何计算p值
  11. 数据分析统计知识—假设检验
  12. java高并发解决方案
  13. 子网划分的计算与可用主机数
  14. MySql作业练习题
  15. 糖友日常生活需要注意什么
  16. 德勤加拿大:在Flow链上创建NFT所消耗的能量比人们搜索或发布一个帖子还少
  17. 6m缓存和8m缓存差距_6张图,就可以了解1660Ti与RX590的差距
  18. userenv和sys_context函数
  19. iVX和其它低代码平台没啥好比的 (一)
  20. 工程师职称评审两大阶段要明白!

热门文章

  1. 数据经济专题二:地级市、县域、企业数字经济指数、数字乡村指数、相关专利获得情况
  2. python endswith函数_Python中endswith()函数的使用方法
  3. centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
  4. 你懂VR全景制作吗?VR全景可以使用在哪些领域呢?
  5. UML——交互图(顺序图与协作图)
  6. 计算机网络安全及防范措施论文开题报告,计算机网络安全发展论文开题报告
  7. 给你一个支点你能做些什么呢
  8. 阿里平头哥再发芯片含光800,这次要一个打十个!
  9. rca接口_从模拟接口到8K传输 显卡接口这些年变得太多
  10. 转行人工智能,哈佛博士后有话说