贝叶斯邮件分类c语言,朴素贝叶斯实例——邮件分类

朴素贝叶斯在文本分类方面使用比较广,即使文本单词之间在现实生活中并不是独立的变量,但是使用朴素贝叶斯进行分类还是能达到很好的效果。

朴素贝叶斯的一个实例就是分辨邮件是否是垃圾邮件,其过程如下。

1.首先我们是存在一定的训练集供我们来建立模型。在已有的实例集里,我们通常是用一部分来作为训练集,剩下的部分作为测试用。

2.从训练集里,我们要计算如下几个参数:

正常邮件的概率,即P(Y=0)

垃圾邮件的概率,即P(Y=1)

每个单词Xi出现在正常邮件里的概率,即Pi(Xi | Y=0)

每个单词Xi出现在垃圾邮件里的概率,即Pi(Xi | Y=1)

3.根据公式,我们来分辨一封邮件是否为垃圾邮件:

0818b9ca8b590ca3270a3433284dd417.png

我们要做的就是去找到此封邮件里的单词(剔除掉训练集之外的单词)对应的第二步里计算的四个参数。

这里会出现一个问题,当某个单词只在正常邮件或者垃圾邮件之一出现时,那么必定有一项P(Xi | Y=0/1)会为0,导致整个算式都为零。为了避免此种情况,采用的办法是拉普拉斯顺滑,即将单词出现的次数以及单词总数同时加一,避免了全部为零的特殊情况。

另外一个问题是,当以上情况的单词比较多时,那么相乘后概率就会很小很小,趋近于零,此时的一个解决方案就是取对数,让乘法变为加法,就能解决了。

最后,我们只要比较:

P(Y=0) * P(X1 | Y=0) * P(X2 | Y=0) * P(X3 | Y=0) *….. *P(Xn | Y=0)

P(Y=1) * P(X1 | Y=1) * P(X2 | Y=1) * P(X3 | Y=1) *….. *P(Xn | Y=1)

以上两项的大小,就可以判断此封邮件是否是垃圾邮件了。

朴素贝叶斯在文本分类的应用里还有很多。 比如中文断句,根据断后的词出现的概率大小,就可以很准确地进行断句了。 还比如输入法里的错拼也能搜出正确的词,根据输入的字母及其周边可能出现的字母出现的概率,可以推荐出最符合想输入的词组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值