机器学习之朴素贝叶斯分类
学习贝叶斯分类算法之前,需要先掌握贝叶斯原理。
一些基本概念:
条件概率:在事件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:得到预测结果: