python朴素贝叶斯算法(sklearn.naive_bayes),会通过了解什么是朴素贝叶斯、贝叶斯公式推导、实际案例去讲解。也同时记录学习的过程帮组大家一起学习如果实际应该贝叶斯算法去分析。
文章目录
贝叶斯解决问题介绍:
贝叶斯算法是英国数学家贝叶斯(约1701-1761)Thomas Bayes,生前提出为解决“逆概”问题写的一篇文章。
“逆概”就是逆向概率
,有逆向概率就会有正向概率
。举个简单的例子就能理解什么是正向概率和逆向概率:
- 正向概率:假设袋子里面有两种球N个白球和M个黑球,你伸手进去摸一个,摸出黑球的概率有多大?正向算概率我们就用黑球的个数除以球的总数就等于摸出黑球的概率。
- 逆向概率:如果我们事先不知道袋子里有多少个球,也不知道黑白球的比例。而是闭着眼睛随便摸一个(或者摸多个)球,观察这些取出来的球的颜色之后。那么我们可以就此对袋子里面的黑白球的比例作出推测。
现实世界本身就是不确定的,人类的观察能力有限。我们日常所观察到的只是事物表面上的结果,因此我们需要提供一个猜测。这个就是贝叶斯需要解决的问题。
逆向概率例子:
有一个学校男生女生比例分别为60%和40%,男生100%穿长裤,女生50%会穿长裤剩下的会穿裙子。远处的校门口走来一个穿长裤的学生,无法判断性别。求这个学生是女生的概率有多大?
我们先按自己现在方式进行思考一下,要求这个穿长裤的学生是女生的概率。
案例公式推导:
因为不知道学校总人数是多少,我们就假设总人数为U
穿长裤的男生人数:
P(Boy)
男生的概率,P(Pants|Boy)
男生穿长裤的概率
U ∗ P ( B o y ) ∗ P ( P a n t s ∣ B o y ) U*P(Boy)*P(Pants|Boy) U∗P(Boy)∗P(Pants∣Boy)
穿长裤的女生人数:
P(Girl)
女生的概率,P(Pants|Girl)
女生穿长裤的概率
U ∗ P ( G i r l ) ∗ P ( P a n t s ∣ G i r l ) U*P(Girl)*P(Pants|Girl) U∗P(Girl)∗P(Pants∣Girl)
穿长裤的总人数:
U ∗ P ( B o y ) ∗ P ( P a n t s ∣ B o y ) + U ∗ P ( G i r l ) ∗ P ( P a n t s ∣ G i r l ) U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl) U∗P(Boy)∗P(Pants∣Boy)+U∗P(Girl)∗P(Pants∣Girl)
那么女生穿长裤的概率:穿长裤的女生数/穿长裤的总人数 U ∗ P ( G i r l ) ∗ P ( P a n t s ∣ G i r l ) U ∗ P ( B o y ) ∗ P ( P a n t s ∣ B o y ) + U ∗ P ( G i r l ) ∗ P ( P a n t s ∣ G i r l ) \frac{U*P(Girl)*P(Pants|Girl)}{U*P(Boy)*P(Pants