朴素贝叶斯分类

1.条件概率:

        条件概率是指事件A在另外一个事件B已经发生条件下的发生概率,记P(A|B)。

                          

   如上图,拿到2个篮球的概率即P(AB),事件A为第一次拿到篮球的概率,这里为P(A)= 2/5;事件B为第二次拿到篮球的概率,这里为在第一次拿到篮球的条件下,第二次拿到篮球的条件概率P(B|A)。根据上边等式,可以推导出条件概率的求解公式为:

                                        

2.贝叶斯定理:

         贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。下面不加证明地直接给出贝叶斯定理:

                     

 

         贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

    朴素贝叶斯算法是假设各个特征之间相互独立。

 

3.朴素贝叶斯:

         贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

  整个朴素贝叶斯分类分为三个阶段:

    1.准备工作阶段,任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
    2.分类器训练阶段。这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
    3.应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

# 导入数据
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target
# 数据分类
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
# 模型训练与预测
from sklearn.naive_bayes import MultinomialNB, GaussianNB
Bys = GaussianNB(var_smoothing=1e-8)
Bys.fit(x_train,y_train)
import numpy as np
from sklearn import metrics
pred = Bys.predict(x_test)
accuracy = metrics.accuracy_score(y_test,pred)
print(accuracy)

优点:

  (1)算法逻辑简单,易于实现

  (2)分类过程中时空开销小

缺点:

  理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

    而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

 

参考链接:带你理解朴素贝叶斯分类算法 - 知乎 (zhihu.com)

     朴素贝叶斯分类(Nave Bayes)_guoyunfei20的博客-CSDN博客_朴素贝叶斯

     和鲸训练营:机器学习1 - Heywhale.com

posted @ 2022-03-20 21:38  hungry_J  阅读(12)  评论(0)    收藏  举报