假设一个学校有 45% 的男生和 55% 的女生,学校规定不能穿奇装异服,男生的裤子只能穿长筒裤,而女生可以穿裙子或者长筒裤,已知该学校穿长筒裤的女生和穿裙子的女生数量相等,所有男生都必须穿长筒裤,请问如果你从远处看到一个穿裤子的学生,那么这个学生是女生的概率是多少?
看完上述问题,你是不是已经很快的计算出了结果呢?还是丈二和尚,摸不到头脑呢?下面我们一起来分析一下,我们根据贝叶斯公式,列出要用到的事件概率:
学校女生的概率:P(女生)= 0.55 女生中穿裤子的概率:P(裤子|女)= 0.5 学校中穿裤子的概率:P(裤子)= 0.45 + 0.275= 0.725
知道了上述概率,下面使用贝叶斯公式求解 P(女生|裤子) 的概率:
P(女|裤子) = P(裤子|女生) * P(女生) / P(裤子) = 0.5 * 0.55 / 0.725 = 0.379
利用上述公式就计算除了后验概率 P(女生|裤子) 的概率,这里的 P(女生) 和 P(裤子)叫做先验概率,而 P(裤子|女生) 就是我们经常提起的条件概率“似然度”。
sklearn实现朴素贝叶斯
在 sklearn 库中,基于贝叶斯定理的算法集中在 sklearn.naive_bayes 包中,根据对“似然度 P(xi|y)”计算方法的不同,我们将朴素贝叶斯大致分为三种:多项式朴素贝叶斯(MultinomialNB)、伯努利分布朴素贝叶斯(BernoulliNB)、高斯分布朴素贝叶斯(GaussianNB)。另外一点要牢记,朴素贝叶斯算法的实现是基于假设而来,在朴素贝叶斯看来,特征之间是相互独立的,互不影响的。
高斯朴素贝叶斯适用于特征呈正态分布的,多项式贝叶斯适用于特征是多项式分布的,伯努利贝叶斯适用于二项分布。
1) 算法使用流程
使用朴素贝叶斯算法,具体分为三步:
- 统计样本数,即统计先验概率 P(y) 和 似然度 P(x|y)。
- 根据待测样本所包含的特征,对不同类分别进行后验概率计算。
- 比较 y1,y2,...yn 的后验概率,哪个的概率值最大就将其作为预测输出。
2) 朴素贝叶斯算法应用
下面通过鸢尾花数据集对朴素贝叶斯分类算法进行简单讲解。如下所示:
- #鸢尾花数据集
- from sklearn.datasets import load_iris
- #导入朴素贝叶斯模型,这里选用高斯分类器
- from sklearn.naive_bayes import GaussianNB
- #载入数据集
- X,y=load_iris(return_X_y=True)
- bayes_modle=GaussianNB()
- #训练数据
- bayes_modle.fit(X,y)
- #使用模型进行分类预测
- result=bayes_modle.predict(X)
- print(result)
- #对模型评分
- model_score=bayes_modle.score(X,y)
- print(model_score)
输出结果:
预测分类: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2] 模型评分: 0.96标签:概率,女生,bayes,贝叶斯,算法,朴素,裤子,sklearn From: https://blog.csdn.net/weixin_66519663/article/details/140679596