Naive Bayes 朴素贝叶斯的JAVA代码实现

JAVA工程文件可在http://download.csdn.net/detail/u011321908/6385295下载 下面贴的代码仅是主类程序


1.关于贝叶斯分类

bayes 是一种统计学分类方法,它基于贝叶斯定理,它假定一个属性值对给定类的影响独立于其它属性点的值。该假定称作类条件独立。做次假定是为了简化所需计算,并在此意义下称为“朴素的”。

bayes分类的算法大致如下:

(1)对于属性值是离散的,并且目标label值也是离散的情况下。分别计算label不同取值的概率,以及样本在label情况下的概率值,然后将这些概率值相乘最后得到一个概率的乘积,选择概率乘积最大的那个值对应的label值就为预测的结果。

例如以下:是预测苹果在给定属性的情况是甜还是不甜的情况:

color={0,1,2,3} weight={2,3,4};是属性序列,为离散型。sweet={yes,no}是目标值,也为离散型;

这时我们要预测在color=3,weight=3的情况下的目标值,计算过程如下:

P{y=yes}=2/5=0.4; P{color=3|yes}=1/2=0.5;P{weight=3|yes}=1/2=0.5;   故F{color=3,weight=3}取yesd的概率为 0.4*0.5*0.5=0.1;

P{y=no}=3/5=0.6; P{color=3|no}=1/3 P{weight=3|no}=1/3;  故P{color=3,weight=3}取no为 0.6*1/3*1/3=1/15;

0.1>1/15 所以认为 F{color=3,weight=3}=yes;

(2)对于属性值是连续的情况,思想和离散是相同的,只是这时候我们计算属性的概率用的是高斯密度:


这里的Xk就是样本的取值,u是样本所在列的均值,kesi是标准差;

最后代码如下:





你可能感兴趣的:(数据挖掘,NaiveBayes算法的实现)