分类: 大数据
2014-04-26 14:39:05
上一篇文章提到过两种分类方法,一种是GDA另一种是Logistic分类法。这两种分类法各有各的有适和特点,虽然它们可以实现二分类,但是他们要求输入特征是连续的。朴素Bayes方法是一种处理离散特征的分类方法。这篇博客正,我们先简单的介绍Bayes分类法,然后给出其python实现代码。
我们知道朴素Bayes是基于贝叶斯理论而开发出来的。直白的说就是两个存在关系的事件A和B,B发生了,A有多大的可能发生,这就是Bayes里理论了,用公式表示,如下:
我们在利用上面的公式,也就是Bayes法,进行分类时主要就是确定p(B|A)和p(A)。因为对于A的每种取值p(B)都是一样的,所以可以把上式缩写成:p(A=i|B)=max{p(B|A=i)*p(A=i)}。下面我们假设i=0或1,则在训练数据时我们的主要任务就是确定下面的三个概率:p(B|A=1)、p(B|A=0)和p(B=1)。我们有了上述三个概率,就可以求得上式中,在B发生的情况下A等于1和0的概率了,哪个概率大就将B分到哪类中。下面我们一文本分类的具体例子进行详细说明。假设我们有训练集,其中每一个元素是X,在这里X是一个向量,向量中的元素表示文本中的word是否出现在字典中,出现为1,否则为0。标签为Y,Y中的元素也为0或1表示二分类,则上面的公式可以写成:
就像上面所说的那样,在对数据进行训练时,主要是求得p(x|y=1)、p(x|y=0)和p(y=1)这三个量,具体的求解方法如下:
一旦我们求解了上面三个值就可以对数据进行分类了,也就是如下公式:
上面无论实在对数据进行计算时,还是进行预测时都用到了一个假设条件,这个条件是:x的各个特征之间是条件独立,这也就是为什么叫做朴素Bayes方法了。好了,下面给出具体的python代码:
点击(此处)折叠或打开