Mahout分类算法学习之实现Naive Bayes分类示例
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分类示例相关推荐
- 分类算法学习(python)
数据集 调用方式:load_xxxx() 鸢尾花数据集150*4 load_iris() 手写数字load_digits() fetch_xxx() 路透社新闻语料数据集fetch_rev1() (较 ...
- 机器学习算法: 朴素贝叶斯(Naive Bayes)
朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...
- 分类算法学习(二)——贝叶斯算法的原理及简单实现
1.3.贝叶斯分类的基础--贝叶斯定理 每次提到贝叶斯定理,我心中的崇敬之情都油然而生,倒不是因为这个定理多高深,而是因为它特别有用.这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两 ...
- 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...
在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
FROM: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/1829190.html 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法 ...
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
1.1.摘要 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一 个正式的定义.然后,介绍贝叶斯分类算法的 ...
- python实现朴素贝叶斯算法_机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...
在这里,我们使用一份皮马印第安女性的医学数据,用来预测其是否会得糖尿病.文件一共有768个样本,我们先剔除缺失值,然后选出20%的样本作为测试样本. 特征分别是: 怀孕次数 口服葡萄糖耐量试验中血浆葡 ...
- python分类算法_用Python实现KNN分类算法
本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下 KNN分类算法应该算得上是机器学习中最简单的分类算法了,所谓KNN即为K-NearestNeighbor(K个最邻 ...
- python分类算法报告_Python机器学习(1)——决策树分类算法
1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建 ...
最新文章
- Andriod anim translate中的属性介绍
- php后台登录页修改成ajax,使用php后台给自己做一个页面路由,配合ajax实现局部刷新。(示例代码)...
- A - A Secret -扩展KMP
- git 基本使用教程
- Python学习笔记:初探NumPy世界
- mysql 5.7多层级json查询_MySql5.7 json查询
- springmvc项目,浏览器报404错误的问题
- WebRTC通话原理(六)
- 分布式存储系统学习笔记(一)—什么是分布式系统(3)—复制
- ssh登录很慢,登录上去后速度正常问题的解决方法
- pycharm主题方案
- 【Registration of 3D Point Clouds with Low Overlap】
- 关于 librecad 的中文支持
- JAVA面试常考系列七
- html倒计时免费代码,JS倒计时代码汇总
- OD使用经验【转载】
- 逆滲透水與蒸餾水最不能喝
- 【题目】一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒后每只蚂蚁的位置
- java的无参构造方法_Java有参构造方法和无参构造方法
- 中国工程院院士邬江兴:未来网络之憧憬——情景网络
热门文章
- bzoj 36733674 可持久化并查集加强版(可持久化线段树+启发式合并)
- 游戏开发-从零开始 002
- Fast Matrix Operations
- linux -- Linux diff与patch的深入分析
- B/S开发中浏览器的工具利器
- ASP.NET 2.0 中的新增服务、控件与功能概述(四)
- echarts 获取点击的y轴数值_用 Python 自动获取NBA现役球员的职业生涯数据曲线
- @SpringBootTest注解进行单元测试无法运行
- 使用docker安装Mongodb
- APP:分享六款非常实用的冷门APP软件,值得一试!