使用mapreduce用贝叶斯分类器训练

继上一篇配置好hadoop和eclipse环境之后。我开始做我的实验。
实验内容:通过贝叶斯公式对文件分类到某个文件夹中。
实验项目链接:
https://download.csdn.net/download/weixin_42615157/10883188
实验原理:贝叶斯分类器,通过其名字我们就可以知道,是以贝叶斯公式为基础。
公式如下:
在这里插入图片描述

这里P(B|A)我们称作后验概率,P(B)我们称作先验概率。在本实验中我们需要去预测某个文件属于哪个文件夹的类的概率。因为文件中包括很多单词,我们是通过对已知单词求其后验概率然后来对文件进行预测,即A为单词,B代表类。我们需要求P(B|A)。一般情况下P(A|B),P(A),P(B)都比较容易得出。我们实验数据取的是AUSTER和CANA两个类(具体如下图显示)。所以我们需要计算属于哪个类的概率为多大,如果属于A的概率大于属于B的概率,就判断这个单词属于A类。为了计算P(B|A),我们需要分别计算P(A),P(A|B) P(B)。P(A)代表某个单词的概率,计算方式是所有文件中这个单词的数量/所有文件所有单词的总数量,所以要统计所有单词的个数。P(B)代表某个类的概率,也叫做先验概率。其计算方式是一个类中所有文件的总数除以所有类文件的总数。P(A|B)又称条件概率,其计算方式是一个类中该单词数量除以该类的单词总数。这样我们可以计算出预测文档中某个单词属于某个类,设置两个参数B1,B2来计数,如果预测的单词是第一类则B1++,如果是第二类则B2++。如果预测文档所有单词计算完,B1>=B2;则该文件是第一类,否则是第二类。
文件夹内容
在这里插入图片描述
文件内容:
在这里插入图片描述
我们所学mapreduce知识,mapreduce关键步骤分成map,shuffle,reduce,三个步骤。Map主要是对所操作对象进行计数,shuffle将map的结果进行整合,reduce对shuffle的结果进行删减,统计起来。按照上述的操作,我们用mapreduce算法,采用贝叶斯分类器的原理,对数据进行了训练。训练出的模型,我们用于预测。本文数据采用已经下载好的数据文件中/NBCorpus/country/AUSTR和/NBCorpus/country/CANA两个文件夹的数据。由于训练数据给的是一个文件夹且下面文件夹很多,为了方便处理数据和要取一定比例的数据作为测试数据(这里取百分之二十作为测试数据),我们对原始的数据进行了预处理,在上述所给的文件夹中随机取了百分之八十的数据当作训练数据,剩余的百分之二十的数据当作了测试数据。并分别把他们合并到一个大文件中。然后对这个大文件进行处理训练。对这个大的文件进行map,reduce操作。为了完成训练,我们一共使用了五个map,reduce函数进行计算参数。第一个map函数CalcAllWordInTrainData.java,这里我们统计训练数据中所有的单词数,第二个map函数CalcDocNumInClass.java这里我们统计一个类中间的文件数,第三个map函数CalcEachWordNumInClass.java这里我们用来统计一个类中间的每个单词的数。第四个map函数CalcWordNumInClass.java这里用来计算一个类中所有单词的数量。第五个map函数在NaiveBayes.java用来计算该文件属于哪个类。
这个文件属于哪个类的概率越大,就划分到哪个类中间。然后把测试数据丢到刚刚训练好的模型中进行判断。

代码使用流程:
文件夹中有一个GetTestData.java这个在本地跑就可以得到百分之八十的训练数据(数据直接覆盖在原来的/NBCorpus/Country/CANA和/NBCorpus/Country/AUSTR),百分之二十的测试数据(在/NBCorpus/Test/AUSTR和/NBCorpus/Test/CANA)下。然后将该数据上传到HDFS上面。如图:
在这里插入图片描述
然后使用main函数进行测试,计算相关map函数和计算机后验概率,最后运行Calc_P_R_F1.java运行计算机结果。

运行结果全在output文件中:
在这里插入图片描述
这是我的结果
在这里插入图片描述

注意使用的时候要修改路径,路径全保留在utils文件中。
祝大家好运!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值