mahout bayesian

来源:互联网 发布:sal绘画软件 sai 编辑:程序博客网 时间:2024/06/06 04:01

       Bayesian算法是一种利用概率统计知识进行分类的算法,在许多场合,朴素贝叶斯的分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,且方法简单、分类准确率高、速度快。这个算法是在贝叶斯定理的基础上发展而来的,贝叶斯定理假设不同属性值之间是不关联的。但是在现实生活中的很多情况下,这种假设是不成立的,从而会导致该算法的准确度有所下降。

       贝叶斯算法的流程图如1-1所示。

                                                                

图 1-1 贝叶斯算法流程图

        每个数据样本由特征向量X(a1,a2,...)表示,每个数据样本X后面都有这个样本所属的类别yi,P(yi)表示每个类别的概率,P(ai|yi)表示每个属性每个类别在yi发生的前提下的厚颜概率,p(yi|(a1,a2,...))表示新的特征向量X最可能被分为的i类。


       项目期间并没有具体用该算法进行分类操作,因为这里我就用从相关资料上了解到的实例对mahout bayesian算法进一步进行解释。

       在mahout中,Bayesian算法可用来进行文本的分类,这里结合20组新闻数据(Twenty newsgroups classification example)实例来说明mahout中算法的实现思路。

      具体实现过程:

      Input:20组新闻数据,一共有大概20000个文件,包含在20个文件夹中,文件夹即为文件所属的类别

1.  转换文本为向量文件

    (1)文本文件转为序列文件 对应seqdirectory任务

    bin/mahout  seqdirectory -i lyn/mahout/20news-all -o lyn/mahout/20news-seq
   (2)把序列文件转换为向量 对应seq2sparse任务

   bin/mahout  seq2sparse -i  lyn/mahout/20news-seq  -o lyn/mahout/20news-vectors -lnorm -nv -wt tfidf

2. 将输入文件分为两部分,一部分用于训练贝叶斯模型,另一部分用于测试。这部分不会设计到job任务,而是直接对HDFS文件进行操作,将原始数据按照一定的比例分为两组  对应split任务

bin/mahout trainnb -i lyn/mahout/20news-vectors -tr lyn/mahout/20news-train-vectors -te lyn/mahout/20news-test-vectors -rs 40 -ow --sequenceFiles -xm sequential

3. 训练贝叶斯模型 对应trainnb任务

bin/mahout -i lyn/mahout/20news-train-vectors -el -o lyn/mahout/model -li lyn/mahout/labelindex -ow
4. 测试、评估贝叶斯模型

bin/mahout testnb -i lyn/mahout/20news-train-vectors -m lyn/mahout/model -l lyn/mahout/labelindex -ow -o lyn/mahout/20news-testing


 

   








参考来源:blog.csdn.net/fansy1990

                  <<Mahout算法解析与案例实战>>

0 0
原创粉丝点击