机器学习之朴素贝叶斯分类

学习贝叶斯分类算法之前,需要先掌握贝叶斯原理。

一些基本概念:

条件概率:在事件A发生的情况下,发生时间事件B的概率,一般用P(B|A)标记。

例如:

有一个红色箱子,一个白色箱子,在红色箱子中有3个黑色石头,4个灰色石头,在白色箱子中有4个黑色石头,有3个白色箱子。那么从红色箱子中去到黑色石头的概率是多少。类似于这样的问题被称为条件概率。

条件概率可以通过以下方式计算出结果

P(A|B) = P(A and B) P(B)   推导出 P(A and B) = P(A|B) / P(B)

B事件发生的情况下,A发生的概率 等价于 A和B同时发生 * P单独发生的概率。

P(B|A) = P(B and A) P(A)   推导出 P(B and A) = P(B|A)/P(A)

根据以上两个推导,又因为P(A and B) = P(B and A)可以得到

P(B|A)/P(A) = P(A|B) / P(B)

P(B|A) =P(A|B) * P(A)/P(B)

把公式P(B|A) =P(A|B) * P(A)/P(B)我们称之为贝叶斯定理。换一种方式描述如下:

P(类别|特征) = P(特征|类别)*P(类别)/P(特征)

利用贝叶斯定理,在机器学习中是如何进行分类了。

我们已经有一份数据集合,那么从该数据集合中,可以计算得到P(特征|类别),P(类别),P(特征)概率,然后通过该三者概率,可以计算新的数据属于某个类别的概率,从而进行分类。

该逻辑过程如下:

假定我们训练的数据集样本如下:

机器学习之朴素贝叶斯分类

这时候有一个新的数据样本,内容如下:

机器学习之朴素贝叶斯分类

那个根据新样本的各个特征取值,我们如何判断嫁或不嫁,将这个问题转换称贝叶斯定理,其过程如下:

1:计算不同分类下的概率

P(嫁|不帅,性格不好,矮,不上进) = P(不帅,性格不好,矮,不上进|嫁) * P(嫁) / P(不帅,性格不好,矮,不上进)

P(不嫁|不帅,性格不好,矮,不上进) = P(不帅,性格不好,矮,不上进|不嫁) * P(不嫁) / P(不帅,性格不好,矮,不上进)

在上面过程中:等式右边的内容都可以根据已有数据集合的内容计算得到。将等式展开如下:

P(嫁|不帅,性格不好,矮,不上进) = [P(不帅|嫁) * P(性格不好|嫁) * P(矮|嫁) * P(不上进|嫁) * P(嫁)]/[P(不帅) * P(性格不好) * P(矮) * P(不上进)]

P(不嫁|不帅,性格不好,矮,不上进) = [P(不帅|不嫁) * P(性格不好|不嫁) * P(矮|不嫁) * P(不上进|不嫁) * P(不嫁)]/[P(不帅) * P(性格不好) * P(矮) * P(不上进)]

2:选择概率大的作为计算结果

代码如下:

1:生成训练样例数据:

机器学习之朴素贝叶斯分类

2:根据分类类型,计算在样例数据中的概率

机器学习之朴素贝叶斯分类

3:根据分类类型,特征取值为某一个特定只时的概率

机器学习之朴素贝叶斯分类

4:根据特征取值计算该特征取值下的概率

机器学习之朴素贝叶斯分类

 

5:根据新的数据计算该数据在不同分类下的概率并作出判断

机器学习之朴素贝叶斯分类

6:得到预测结果:

机器学习之朴素贝叶斯分类