1.简介

(1) 贝叶斯分类器的分类原理发源于古典概率理论,是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。朴素贝叶斯分类器(Naive Bayes Classifier)做了一个简单的假定:给定目标值时属性之间相互条件独立,即给定元组的类标号,假定属性值有条件地相互独立,即在属性间不存在依赖关系。朴素贝叶斯分类模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。

(2) Mahout 实现了Traditional Naive Bayes 和Complementary Naive Bayes,后者是在前者的基础上增加了结果分析功能(Result Analyzer).

(3) 主要相关的Mahout类:
org.apache.mahout.classifier.naivebayes.NaiveBayesModel
org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier
org.apache.mahout.classifier.naivebayes.ComplementaryNaiveBayesClassifier

2.数据

使用20 newsgroups data (http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz) ,数据集按时间分为训练数据和测试数据,总大小约为85MB,每个数据文件为一条信息,文件头部几行指定消息的发送者、长度、类型、使用软件,以及主题等,然后用空行将其与正文隔开,正文没有固定的格式。

3.目标

根据新闻文档内容,将其分到不同的文档类型中。

4.程序

使用Mahout自带示例程序,主要的训练类和测试类分别为TrainNaiveBayesJob.java和TestNaiveBayesDriver.java,JAR包为mahout-core-0.7-job.jar,详细代码见(mahout-distribution-0.7/core/src/main/java/org/apache/mahout/classifier/naivebayes/trainning,mahout-distribution-0.7/core/src/main/java/org/apache/mahout/classifier/naivebayes/test).

5.步骤
(1) 数据准备

①将20news-bydate.tar.gz解压,并将20news-bydate中的所有子文夹中的内容复制到20news-all中,该步骤已经完成,20news-all文件夹存放在hdfs:/share/data/ Mahout_examples_Data_Set中
②将20news-all放在hdfs的用户根目录下
user@hadoop:~/workspace$hadoop dfs -cp /share/data/Mahout_examples_Data_Set/20news-all .
③从20newsgroups data创建序列文件(sequence files)
user@hadoop:~/workspace$mahout seqdirectory -i 20news-all -o 20news-seq
④将序列文件转化为向量
user@hadoop:~/workspace$mahout seq2sparse -i ./20news-seq -o ./20news-vectors  -lnorm -nv  -wt tfidf  
⑤将向量数据集分为训练数据和检测数据,以随机40-60拆分
user@hadoop:~/workspace$mahout split -i ./20news-vectors/tfidf-vectors --trainingOutput ./20news-train-vectors --testOutput ./20news-test-vectors --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential

(2)训练朴素贝叶斯模型

user@hadoop:~/workspace$mahout trainnb -i  ./20news-train-vectors -el -o ./model -li ./labelindex -ow -c

(3)检验朴素贝叶斯模型
user@hadoop:~/workspace$mahout testnb -i ./20news-train-vectors -m ./model -l ./labelindex -ow -o 20news-testing -c
结果如下:

(4)检测模型分类效果
user@hadoop:~/workspace$mahout testnb -i ./20news-test-vectors -m ./model -l ./labelindex -ow -o ./20news-testing -c
结果如下:

(5)查看结果,将序列文件转化为文本
user@hadoop:~/workspace$mahout seqdumper -i ./20news-testing/part-m-00000 -o ./20news_testing.res
user@hadoop:~/workspace$cat 20news_testging.res

结果如下:

Mahout分类算法学习之实现Naive Bayes分类示例相关推荐

  1. 分类算法学习(python)

    数据集 调用方式:load_xxxx() 鸢尾花数据集150*4 load_iris() 手写数字load_digits() fetch_xxx() 路透社新闻语料数据集fetch_rev1() (较 ...

  2. 机器学习算法: 朴素贝叶斯(Naive Bayes)

    朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...

  3. 分类算法学习(二)——贝叶斯算法的原理及简单实现

    1.3.贝叶斯分类的基础--贝叶斯定理 每次提到贝叶斯定理,我心中的崇敬之情都油然而生,倒不是因为这个定理多高深,而是因为它特别有用.这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两 ...

  4. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

  5. 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    FROM: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/1829190.html 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法 ...

  6. 分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    1.1.摘要 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一 个正式的定义.然后,介绍贝叶斯分类算法的 ...

  7. python实现朴素贝叶斯算法_机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...

    在这里,我们使用一份皮马印第安女性的医学数据,用来预测其是否会得糖尿病.文件一共有768个样本,我们先剔除缺失值,然后选出20%的样本作为测试样本. 特征分别是: 怀孕次数 口服葡萄糖耐量试验中血浆葡 ...

  8. python分类算法_用Python实现KNN分类算法

    本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下 KNN分类算法应该算得上是机器学习中最简单的分类算法了,所谓KNN即为K-NearestNeighbor(K个最邻 ...

  9. python分类算法报告_Python机器学习(1)——决策树分类算法

    1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建 ...

最新文章

  1. Andriod anim translate中的属性介绍
  2. php后台登录页修改成ajax,使用php后台给自己做一个页面路由,配合ajax实现局部刷新。(示例代码)...
  3. A - A Secret -扩展KMP
  4. git 基本使用教程
  5. Python学习笔记:初探NumPy世界
  6. mysql 5.7多层级json查询_MySql5.7 json查询
  7. springmvc项目,浏览器报404错误的问题
  8. WebRTC通话原理(六)
  9. 分布式存储系统学习笔记(一)—什么是分布式系统(3)—复制
  10. ssh登录很慢,登录上去后速度正常问题的解决方法
  11. pycharm主题方案
  12. 【Registration of 3D Point Clouds with Low Overlap】
  13. 关于 librecad 的中文支持
  14. JAVA面试常考系列七
  15. html倒计时免费代码,JS倒计时代码汇总
  16. OD使用经验【转载】
  17. 逆滲透水與蒸餾水最不能喝
  18. 【题目】一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒后每只蚂蚁的位置
  19. java的无参构造方法_Java有参构造方法和无参构造方法
  20. 中国工程院院士邬江兴:未来网络之憧憬——情景网络

热门文章

  1. bzoj 36733674 可持久化并查集加强版(可持久化线段树+启发式合并)
  2. 游戏开发-从零开始 002
  3. Fast Matrix Operations
  4. linux -- Linux diff与patch的深入分析
  5. B/S开发中浏览器的工具利器
  6. ASP.NET 2.0 中的新增服务、控件与功能概述(四)
  7. echarts 获取点击的y轴数值_用 Python 自动获取NBA现役球员的职业生涯数据曲线
  8. @SpringBootTest注解进行单元测试无法运行
  9. 使用docker安装Mongodb
  10. APP:分享六款非常实用的冷门APP软件,值得一试!