通过两节知识的学习,相信你对朴素贝叶斯算法有了初步的掌握,本节将实际应用朴素贝叶斯算法,从实战中体会算法的精妙之处。
首先看下面一个简单应用案例:
假设一个学校有 45% 的男生和 55% 的女生,学校规定不能穿奇装异服,男生的裤子只能穿长筒裤,而女生可以穿裙子或者长筒裤,已知该学校穿长筒裤的女生和穿裙子的女生数量相等,所有男生都必须穿长筒裤,请问如果你从远处看到一个穿裤子的学生,那么这个学生是女生的概率是多少?
看完上述问题,你是不是已经很快的计算出了结果呢?还是丈二和尚,摸不到头脑呢?下面我们一起来分析一下,我们根据贝叶斯公式,列出要用到的事件概率:
知道了上述概率,下面使用贝叶斯公式求解 P(女生|裤子) 的概率:
利用上述公式就计算除了后验概率 P(女生|裤子) 的概率,这里的 P(女生) 和 P(裤子)叫做先验概率,而 P(裤子|女生) 就是我们经常提起的条件概率“似然度”。
在 sklearn 库中,基于贝叶斯定理的算法集中在 sklearn.naive_bayes 包中,根据对“似然度 P(xi|y)”计算方法的不同,我们将朴素贝叶斯大致分为三种:多项式朴素贝叶斯(MultinomialNB)、伯努利分布朴素贝叶斯(BernoulliNB)、高斯分布朴素贝叶斯(GaussianNB)。另外一点要牢记,朴素贝叶斯算法的实现是基于假设而来,在朴素贝叶斯看来,特征之间是相互独立的,互不影响的。
高斯朴素贝叶斯适用于特征呈正态分布的,多项式贝叶斯适用于特征是多项式分布的,伯努利贝叶斯适用于二项分布。
使用朴素贝叶斯算法,具体分为三步:
下面通过鸢尾花数据集对朴素贝叶斯分类算法进行简单讲解。如下所示:
- #鸢尾花数据集
- 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)
输出结果: