目录

简介

基本概念

贝叶斯定理

贝叶斯公式的本质内涵

代码

托马斯·贝叶斯


简介

朴素贝叶斯分类算法作为机器学习最经典的算法之一,该算法是一种有监督学习算法。其理论基础是“贝叶斯定理”,该原理是由英国著名数学家托马斯·贝叶斯提出,贝叶斯定理是基于统计学和概率论相关知识实现的。贝叶斯分类算法有着极其广泛的用途,例如广泛应用于情感分类,文本分类等分类任务。

基本概念

为了更好理解贝叶斯分类算法,在理论推导之前理解几个基本概念。

先验概率:根据经验知识得的概率。

后验概率:某个事件发生是由某些因素引起的可能性大小。

条件概率公式:设有事件A,B,已知B的条件下发生的概率为P(A|B),将A,B事件同时发生记为

P(A,B),有下列条件概率公式:

联合概率:联合概率指的是包含多个条件且所有条件同时成立的概率,记作P(X=a,Y=b)或P(a,b),有的书上也习惯记作P(ab),但是这种记法个人不太习惯,所以下文采用以逗号分隔的记法。

联合概率公式:


        (1) B1,B2....两两互斥,即 Bi ∩ Bj = ∅ ,i≠j , i,j=1,2,....,且P(Bi)>0,i=1,2,....;
                (2) B1∪B2∪....=Ω ,则称事件组 B1,B2,...是样本空间Ω的一个划分。设 B1,B2,...是样本空间Ω的一个划分,A为任一事件,则:

上式即为全概率公式。

贝叶斯定理

贝叶斯定理的发现者托马斯·贝叶斯提出了一个很有意思的假设:“如果一个袋子中共有 10 个球,分别是黑球和白球,但是我们不知道它们之间的比例是怎么样的,现在,仅通过摸出的球的颜色,是否能判断出袋子里面黑白球的比例?”

上述问题可能与我们高中时期所接受的的概率有所冲突,因为你所接触的概率问题可能是这样的:“一个袋子里面有 10 个球,其中 4 个黑球,6 个白球,如果你随机抓取一个球,那么是黑球的概率是多少?”毫无疑问,答案是 0.4。这个问题非常简单,因为我们事先知道了袋子里面黑球和白球的比例,所以很容易算出摸一个球的概率,但是在某些复杂情况下,我们无法得知“比例”,此时就引出了贝叶斯提出的问题。

在统计学中有两个较大的学派:一个是“频率”学派,另一个便是“贝叶斯”学派,它们都有各自庞大的知识体系,而“贝叶斯”主要利用了“相关性”一词。下面以通俗易懂的方式描述一下“贝叶斯定理”:通常,事件 A 在事件 B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定的相关性,并具有以下公式(称之为“贝叶斯公式”):

贝叶斯公式的本质内涵

由因到果由果推因
在现实中,我们可以把事件A看作结果,把事件B1,B2,...,Bn看作导致这个结果的各种原因。那么,我们所介绍的全概率公式
P(A)=P(B1)P(A|B1)+P(B2)P(A|B2)+...+P(Bn)P(A|Bn)
就是由各种原因推理出结果事件发生的概率,是由因到果。
但是,实际上还存在着一类重要的应用场景:我们在日常生活中常常是观察到某种现象,然后去反推造成这种现象的各种原因的概率。简单来说,就是由果推因。

代码

from sklearn.datasets import fetch_20newsgroups  # 从sklearn.datasets里导入新闻数据抓取器 fetch_20newsgroups
from sklearn.model_selection import  train_test_split
from sklearn.feature_extraction.text import CountVectorizer  # 从sklearn.feature_extraction.text里导入文本特征向量化模块
from sklearn.naive_bayes import MultinomialNB     # 从sklean.naive_bayes里导入朴素贝叶斯模型
from sklearn.metrics import classification_report
#1.数据获取
news = fetch_20newsgroups(subset='all')
print(len(news.data))  # 输出数据的条数:18846#2.数据预处理:训练集和测试集分割,文本特征向量化
X_train,X_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25,random_state=33) # 随机采样25%的数据样本作为测试集
#print X_train[0]  #查看训练样本
#print y_train[0:100]  #查看标签#文本特征向量化
vec = CountVectorizer()
X_train = vec.fit_transform(X_train)
X_test = vec.transform(X_test)#3.使用朴素贝叶斯进行训练
mnb = MultinomialNB()   # 使用默认配置初始化朴素贝叶斯
mnb.fit(X_train,y_train)    # 利用训练数据对模型参数进行估计
y_predict = mnb.predict(X_test)     # 对参数进行预测#4.获取结果报告
print('The Accuracy of Naive Bayes Classifier is:', mnb.score(X_test,y_test))
print(classification_report(y_test, y_predict, target_names = news.target_names))
Downloading 20news dataset. This may take a few minutes.
Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)
18846
The Accuracy of Naive Bayes Classifier is: 0.8397707979626485precision    recall  f1-score   supportalt.atheism       0.86      0.86      0.86       201comp.graphics       0.59      0.86      0.70       250comp.os.ms-windows.misc       0.89      0.10      0.17       248
comp.sys.ibm.pc.hardware       0.60      0.88      0.72       240comp.sys.mac.hardware       0.93      0.78      0.85       242comp.windows.x       0.82      0.84      0.83       263misc.forsale       0.91      0.70      0.79       257rec.autos       0.89      0.89      0.89       238rec.motorcycles       0.98      0.92      0.95       276rec.sport.baseball       0.98      0.91      0.95       251rec.sport.hockey       0.93      0.99      0.96       233sci.crypt       0.86      0.98      0.91       238sci.electronics       0.85      0.88      0.86       249sci.med       0.92      0.94      0.93       245sci.space       0.89      0.96      0.92       221soc.religion.christian       0.78      0.96      0.86       232talk.politics.guns       0.88      0.96      0.92       251talk.politics.mideast       0.90      0.98      0.94       231talk.politics.misc       0.79      0.89      0.84       188talk.religion.misc       0.93      0.44      0.60       158micro avg       0.84      0.84      0.84      4712macro avg       0.86      0.84      0.82      4712weighted avg       0.86      0.84      0.82      4712

托马斯·贝叶斯

贝叶斯(约1701-1761) Thomas Bayes,英国数学家。约1701年出生于伦敦,做过神甫。1742年成为英国皇家学会会员。1761年4月7日逝世。贝叶斯在数学方面主要研究概率论。他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。他死后,理查德·普莱斯(Richard Price)于1763年将他的著作《机会问题的解法》(An essay towards solving a problem in the doctrine of chances)寄给了英国皇家学会,对于现代概率论和数理统计产生了重要的影响。贝叶斯的另一著作《机会的学说概论》发表于1758年。贝叶斯所采用的许多术语被沿用至今。

机器学习经典算法——朴素贝叶斯分类算法相关推荐

  1. 【机器学习原理】朴素贝叶斯分类算法

    文章目录 一.朴素贝叶斯公式 1. 从统计角度看分类问题 2. 贝叶斯公式的基本思想 贝叶斯的基本逻辑 3. 用贝叶斯公式进行选择 贝叶斯版的预测未来 二.朴素贝叶斯分类的算法原理 1. 朴素贝叶斯分 ...

  2. 机器学习笔记之朴素贝叶斯分类算法

    朴素贝叶斯分类算法: 优点:在数据较少的情况下仍然有效,可以处理多分类问题. 缺点:对于输入数据的准备方式较为敏感. 适用数据类型:标称型数据(离散型数据) 算法原理: 对于某一个条件,这个条件下哪个 ...

  3. 机器学习算法系列(十三)-朴素贝叶斯分类算法(Naive Bayes Classifier Algorithm)

    阅读本文需要的背景知识点:一丢丢编程知识 一.引言   前面几节介绍了一类分类算法--线性判别分析.二次判别分析,接下来介绍另一类分类算法--朴素贝叶斯分类算法1 (Naive Bayes Class ...

  4. 数据挖掘 | 判别分析 +朴素贝叶斯分类算法

    本节记录一下由贝叶斯定理延伸出来的几种预测性建模的方法,主要为线性判别分析(一次,二次),朴素贝叶斯(稍稍提一下贝叶斯网络) 1. 判别分析 判别分析适用于自变量连续,因变量为分类型的情形: 设因变量 ...

  5. 【python机器学习:朴素贝叶斯分类算法】

    python机器学习:朴素贝叶斯分类算法 朴素贝叶斯介绍 贝叶斯公式 基本思想 示例分析 数据展示 先验概率和条件概率 算法步骤: 代码 计算先验概率和条件概率 分类 朴素贝叶斯介绍 贝叶斯分类是一类 ...

  6. 基于python的贝叶斯分类算法预测_python机器学习:朴素贝叶斯分类算法

    大数据挖掘DT机器学习  公众号: datayx 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这 ...

  7. 第六篇:基于朴素贝叶斯分类算法的邮件过滤系统

    前言 朴素贝叶斯算法最为广泛而经典的应用毫无疑问是文档分类,更具体的情形是邮件过滤系统. 本文详细地讲解一个基于朴素贝叶斯分类算法的邮件过滤系统的具体实现. 本文侧重于工程实现,至于其中很多算法的细节 ...

  8. 朴素贝叶斯分类算法原理

    一.朴素贝叶斯分类简介 朴素贝叶斯(Naive Bayesian)是基于贝叶斯定理和特征条件独立假设的分类方法,它通过特征计算分类的概率,选取概率大的情况进行分类,因此它是基于概率论的一种机器学习分类 ...

  9. 朴素贝叶斯分类算法python实现

    前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果挺不错的. 在说明原理之前,先介绍一个叫词向量的 ...

最新文章

  1. *【Hihocoder - offer编程练习赛94 - A】最短管道距离(中位数)
  2. JAVA入门级教学之(break跳出)
  3. 演练 玩游戏支付游戏币
  4. 【Elasticsearch】 Elasticsearch中数据是如何存储的
  5. Windows下判断文件是否存在
  6. 认识Spring以及环境的配置
  7. WebService学习总结(5)——WebService常见开发框架比较
  8. java 动态二维数组,菜鸟求助: 二维数组如何实现动态接收?
  9. c语言找最长串指针改错,2013年计算机二级C语言上机试题及解析35
  10. SharePoint Web Service系列: Add或Update其他各种类型的项
  11. STM32——整形变量转换为字符变量并通过串口发送出去
  12. Mac删除软件之后图标还在怎么办?
  13. 洛谷P3387 【模板】缩点(tarjan)
  14. win10 git bash 设置别名
  15. poj 1125 Stockbroker(多源最短路径)
  16. 羽毛球单打比赛中谁先发球以及在哪个区域发球?
  17. 电热水器排污口镁棒掉入内胆怎么办?
  18. 怎么在sqlyog设置表的外键
  19. 我想学单片机,但不知从何下手
  20. 大一至大三在校期间公众号作品(部分)

热门文章

  1. 代码块(Java )
  2. 苍蓝星MyBatis-第一个程序
  3. 计算机是黑色的用英语怎么说,常见电脑黑屏(有英文字母)的解决办法
  4. html调起苹果手机摄像头_html5 file调用手机摄像头
  5. ns3使用总结(常用语句)
  6. Jenkins实践基础:使用Easypack搭建一主多从的分布式持续集成环境
  7. Linux卸载软件,误将系统libselinux.SO.1文件删除,导致系统命令基本无法使用的尴尬经历-----附解决方案
  8. 电脑喇叭问题:插上耳机有噪音,拔下耳机声音正常
  9. oppoa9处理器怎么样_oppoa92s是什么处理器-oppoa92s处理器怎么样-相当于骁龙多少
  10. 基于c#实现游戏装备系统(基础篇)