物联202 邱郑思毓 2008070213
朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y 。
二、问题分析
在夏季,某公园男性穿凉鞋的概率为 1/2 ,女性穿凉鞋的概率为 2/3,并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,请问他的性别为男性或女性的概率分别为多少?
由问题题干可以得出公园中是男性的概率为2/3,是女性的概率为1/3;是男性又穿凉鞋的概率为1/2,是女性又穿凉鞋的概率为2/3。求的是在穿凉鞋的概率下是男性和女性的概率。接下来就由公式推导和代码编程来实现。
我在朴素贝叶斯算法的理解与实现 - EEEEEcho - 博客园网页下学习了之后进行的推导,在理解了朴素贝叶斯的思想之后,结合例题和以前学到的知识进行了推导,根据上课讲解的步骤进行。
同时添加了我对问题的图理解。
在推导完公式的基础上,我将大体的解体概括梳理了一下,尝试用python进行问题的解答。如下是我对问题代码的简单编写:
from fractions import Fraction
# 先验概率
p_men = Fraction(2, 3) # 由题目得是男性的概率为三分之二
p_women = Fraction(1, 3) # 女性的概率为三分之一
# p_x1为穿凉鞋的概率,p_x0为不穿凉鞋的概率
# 条件概率
p_x1_ymen = Fraction(1, 2) # 由题目得是男性的条件下又穿凉鞋的概率为二分之一
p_x1_ywomen = Fraction(2, 3) # 是女性的条件下又穿凉鞋的概率为三分之二
# 全概率
p_x1 = p_men * p_x1_ymen + p_women * p_x1_ywomen #不考虑性别的情况下,穿拖鞋的概率
p_x0 = p_men * (1 - p_x1_ymen) + p_women * (1 - p_x1_ywomen) #不穿拖鞋的概率
# 后验概率,即为题目所求
p_ymen_x1=p_x1_ymen*p_men/p_x1
p_ywomen_x1=p_x1_ywomen*p_women/p_x1
print("公园中有一个穿拖鞋的人,是男性的概率为:",p_ymen_x1)
print("是女性的概率为:",p_ywomen_x1)
结果为:
代码实现结果和公式推导结果一致,也就是说,在知道一个人穿拖鞋的前提下,这个人是男性的概率是 3/5 ,是女性的概率是 2/5 。如果问题是“判断该人是男性还是女性”,此问题就是一个分类问题。由于依据贝叶斯公式计算的后验概率是男性的概率大于是女性的概率,即由于 P(Y=ymen|X=x1)>P(Y=ywomen|X=x1)P(Y=ymen|X=x1)>P(Y=ywomen|X=x1) ,那么我们就可以将其分类为男性(实际在使用朴素贝叶斯进行分类时,不需要求解分母 P(X=x1)P(X=x1) )。
朴素贝叶斯算法正是利用已知的信息求解后验概率,并依据后验概率的值来进行分类。通过求解出来,通过学习了贝叶斯的推导,收获颇丰。