贝叶斯分类算法

机器学习之贝叶斯算法

泪湿孤枕 提交于 2019-11-27 16:43:32
一、贝叶斯简介   贝叶斯(约1701-1761) Thomas Bayes,英国数学家,贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,生不逢时,死后它的作品才被世人认可。       贝叶斯要解决的问题:   正向概率:假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大?   逆向概率:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测。   现实世界有很多问题本身就是不确定的(比如上面的逆向概率,不确定球的个数),而人类的观察能力是有局限性的,由于我们日常所观察到的只是事物表面上的结果(比如上面的逆向概率,观察取出来的球的颜色),因此我们需要提供一个猜测来得到袋子里面球的比例。 二、贝叶斯推导过程   首先引入一个栗子,假设在一个学校里面男生的概率和女生的概率分别是60%和40%,男生总是穿长裤,女生则一半穿长裤一半穿裙子。   正向概率:随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大?这个比例的计算就比较简单了。   逆向概率:迎面走来一个穿长裤的学生,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别,你能够推断出他(她)是女生的概率是多大吗?这就是我们要解决的问题。       假设学校里面人的总数是 U 个

机器学习之朴树贝叶斯①——(思想及典型例题底层实现)

坚强是说给别人听的谎言 提交于 2019-11-27 07:19:27
文章目录 先验概率、后验概率(条件概率)引例 乘法公式、全概率公式、贝叶斯公式 朴素贝叶斯为何朴素 朴素贝叶斯定义 朴素贝叶斯直观理解 朴素的意义 拉普拉斯平滑 手写代码 先验概率、后验概率(条件概率)引例 想象有 A、B、C 三个不透明的碗倒扣在桌面上,已知其中一个瓷碗下面有鸡蛋。此时请问,鸡蛋在 A 碗下面的概率是多少?答曰 1/3。 现在发生一件事:有人揭开了 C 碗,发现 C 碗下面没有蛋。此时再问:鸡蛋在 A 碗下面的概率是多少?答曰 1/2。注意,由于有“揭开C碗发现鸡蛋不在C碗下面”这个新情况,对于“鸡蛋在 A 碗下面”这件事的主观概率由原来的 1/3 上升到了1/2。这里的 先验概率 就是 1/3, 后验概率(条件概率) 是 1/2。 乘法公式、全概率公式、贝叶斯公式 条件概率 设A,B为任意两个事件,若P(A)>0,我们称在已知事件A发生的条件下,事件B发生的概率为条件概率,记为P(B|A),并定义 乘法公式 如果P(A)>0,则P(AB)=P(A)P(B|A) 如果P(A1…An-1)>0,则P(A1…An)= P(A1) P(A2|A1) P(A3|A1A2)…P(An|A1…An) 全概率公式 全概率公式是用于计算某个“结果” B发生的可能性大小。如果一个结果B的发生总是与某些前提条件Ai 相联系,那么在计算P(B)时,我们就要用Ai 对B作分解

朴素贝叶斯

被刻印的时光 ゝ 提交于 2019-11-27 05:11:56
《概率论》(当年我学习的课程为《概率论与数理统计》,涵盖了概率论与统计学)应该是每个理工科大学生都要学习的课程,不知道有多少同学和我一样,学得一头雾水。悲催的是,考研的时候又学习了一遍,依然不着门路,靠死记硬背过关。好在后面的学习和工作生涯中,再没有和它打过照面,直到最近开始接触机器学习。 《机器学习实战》第4章,开始介绍基于概率论的分类方法。其实《机器学习》这本书对贝叶斯决策论有比较详细的介绍,不过涉及到比较多的数学公式,比较难懂。而本书对程序员比较友好,只涉及很少的数学知识,更多的是通过程序来阐述这一算法。 条件概率 书中举了一个例子来阐述条件概率的概念。7块石头,3块是灰色的,4块是黑色的,放入两个桶A和B,A桶放4块石头(2块灰色,2块黑色),B桶放3块石头(1块灰色,2块灰色)。计算从B桶中取到灰色石头的概率的方法,就是所谓的条件概率。这里的已知条件是石头取自B桶且B桶有3块石头。用公式表示为: P(gray | bucketB) = P(gray and bucketB) / P(bucketB) 1 这个公式看起来不起眼,但却开启了一门新的理论,即通过先验知识和逻辑推理来处理不确定命题。另一种概率解释称为频数概率,它只从数据本身获取结论,并不考虑逻辑推理及先验知识。 另一种有效计算条件概率的方法称为贝叶斯准则。贝叶斯准则告诉我们如何交换条件概率中的条件和结果

朴素贝叶斯算法

一个人想着一个人 提交于 2019-11-26 20:15:23
看的头秃,生活艰难 由条件概率可得,P(wi | x) = P(wi, x) / P(x) 套贝叶斯公式得,P(wi | x) = P(x | wi) * P(wi) / P(x) 通过比较P(wi | x)的大小决定分为哪一类中,由于分母相同,所以转化为比较P(x | wi) * P(wi) 的大小, P(wi)表示分类为wi分类的概率, P(x | wi)表示x在wi分类下的概率,以单词组向量为例,假设单词组向量中的每个单词都是相互独立的,那么总的概率等于各个部分概率相乘,统计每个单词在wi分类下出现的次数 / wi分类中每篇出现的单词总数,然后相乘。(这种方法好像叫做拉普拉斯平滑) 由于相互独立后如果单词没有出现最终得到的概率为0,所以将概率相乘转化为概率相加,对数字去对数,同样有单调性,同时防止特征过多而造成数据相乘越来越小,最后为0的情况,同样也是用对数处理的方法,同时给分母加底数 参考资料 1、《机器学习实战》 2、 https://www.cnblogs.com/lliuye/p/9178090.html 来源: https://www.cnblogs.com/lalalatianlalu/p/11332435.html

Sklearn实现朴素贝叶斯

蓝咒 提交于 2019-11-25 19:17:54
#------------------------------Sklearn 实现朴素贝叶斯----------------------- # 在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。 # 分别是GaussianNB,MultinomialNB和BernoulliNB。 # 其中GaussianNB就是先验为高斯分布的朴素贝叶斯, # MultinomialNB就是先验为多项式分布的朴素贝叶斯, # 而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。 # # 这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。 # 如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。 # 而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。 #----------------------------------案例一------------------------------------ #GaussianNB_高斯朴素贝叶斯 import numpy as np from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from