查看: 1557|回复: 4

mahout:贝叶斯算法应用--新闻分类示例

[复制链接]
论坛徽章:
4
Hadoop研习者初级
日期:2017-07-06 17:16:09金融徽章
日期:2017-07-11 14:28:40python徽章
日期:2017-09-22 16:52:37Hadoop研习者初级
日期:2018-01-11 17:33:01
发表于 2017-6-22 18:00 | 显示全部楼层 |阅读模式
作者 bigdatalgh
[url=]关注[/url]
2016.10.18 14:53* 字数 470 阅读 75评论 0喜欢 0


一、下载数据集,并上传到hdfs
Download and extract the 20news-bydate.tar.gz from the 20newsgroups dataset to the working directory.
1.下载数据集
wget http://101.96.10.65/people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
2.解压数据集
tar -zxvf 20news-bydate.tar.gz
3.精简数据集
删除一部分数据,不需要那么大的数据集。如果你想对全部数据进行计算,这一步就可以省略了。
1.删除train部分的冗余数据    cd 20news-bydate-train    rm -rf rec* talk* sci* comp*2.删除test部分的冗余数据    cd ../20news-bydate-test    rm -rf rec* talk* sci* comp*
4.上传数据集到HDFS
1.在hdfs上创建目录    Hadoop fs -mkdir  /input/mahout/20news_all2.上传数据到hdfs    hadoop fs -put -p  ./20news-bydate-test/  /input/mahout/20news_all/    hadoop fs -put -p  ./20news-bydate-train/  /input/mahout/20news_all/
5.HDFS执行效果


二、将数据集转化为序列文件
Convert the full 20 newsgroups dataset into a < Text, Text > SequenceFile.
执行命令:
${MAHOUT_HOME}/bin/mahout seqdirectory \-i /input/mahout/20news_all \-o /input/mahout/20news_all_seq
shell执行效果:



hadoo yarn web执行效果:


hadoo hdfs web执行效果:


查看序列文件的内容
${MAHOUT_HOME}/bin/mahout seqdumper -i /input/mahout/20news_all_seq/part-m-00000








三、将序列文件转化为向量
Convert and preprocesses the dataset into a < Text, VectorWritable > SequenceFile containing term frequencies for each document.
执行命令:
${MAHOUT_HOME}/bin/mahout seq2sparse \-i /input/mahout/20news_all_seq \-o /input/mahout/20news_all_vec \-wt tfidf \-lnorm \-nv
shell执行效果:



hadoo yarn web执行效果:



hadoo hdfs web执行效果:


四、将向量拆分为训练集和测验集
Split the preprocessed dataset into training and testing sets.
执行命令:
${MAHOUT_HOME}/bin/mahout split \-i /input/mahout/20news_all_vec/tfidf-vectors \-tr /input/mahout/20news_all_rt/train-vectors \-te /input/mahout/20news_all_rt/test-vectors \-xm sequential \-rp 20 \-seq \-ow 其中参数的意义如下:•    -tr训练集     •    -te测试集•    -rp参数设定的是测试数据集占总数据集的百分比,以下代码设定为20%!
shell执行效果:



hadoo hdfs web执行效果:


五、训练分类器
Train the classifier.
1.开始训练
这个过程将进行多次迭代,就想是进行多次训练来熟悉一种模型一样。等待时间比较长,需要一点耐心。。。
执行命令:
${MAHOUT_HOME}/bin/mahout trainnb \-i /input/mahout/20news_all_rt/train-vectors  -el  \-o /input/mahout/20news_all_mi/nbmodel \-li /input/mahout/20news_all_mi/labelindex \-ow \-c
shell执行效果:



hadoo yarn web执行效果:



hadoo hdfs web执行效果:


2.检验训练结果
2.1.查看训练出来的模型:
hadoop fs -ls  /input/mahout/20news_all_mi/nbmodel


2.2. 查看生成的索引:
a.使用Hadoop命令
hadoop fs -text /input/mahout/20news_all_mi/labelindex



b.使用mahout命令
${MAHOUT_HOME}/bin/mahout seqdumper -i  /input/mahout/20news_all_mi/labelindex


六、测试分类器
Test the classifier.
执行命令:
${MAHOUT_HOME}/bin/mahout testnb \-i /input/mahout/20news_all_rt/test-vectors \-m /input/mahout/20news_all_mi/nbmodel \-l /input/mahout/20news_all_mi/labelindex \-o /input/mahout/20news_all_testing \-ow \-c
shell执行效果:





hadoo yarn web执行效果:



hadoo hdfs web执行效果:


查看结果文件内容效果:
${MAHOUT_HOME}/bin/mahout seqdumper -i /input/mahout/20news_all_testing/part-m-00000


七、参考文献
1.贝叶斯算法参考链接
http://mahout.apache.org/users/classification/bayesian.html
2.新闻分类参考链接
http://mahout.apache.org/users/classification/twenty-newsgroups.html



回复

使用道具 举报

论坛徽章:
9
Oracle研习者高级
日期:2016-11-10 14:54:56Oracle研习者高级
日期:2017-08-03 18:07:36Oracle研习者初级
日期:2017-11-03 16:08:22mysql徽章
日期:2017-12-22 16:01:10Oracle研习者高级
日期:2018-06-07 16:24:35高并发架构徽章
日期:2019-01-17 15:19:29Oracle研习者高级
日期:2019-01-24 16:03:57Oracle研习者高级
日期:2019-05-09 14:32:15Oracle研习者中级
日期:2019-07-18 14:39:34
发表于 2017-6-26 11:17 | 显示全部楼层
算法很重要,要多多修练!!
回复 支持 反对

使用道具 举报

论坛徽章:
10
Oracle研习者高级
日期:2013-08-25 14:25:21Julia徽章
日期:2017-12-25 17:39:24Hadoop研习者初级
日期:2017-09-19 10:58:28mysql徽章
日期:2016-07-14 11:09:49Goldengate徽章
日期:2015-06-25 11:35:32Oracle研习者中级
日期:2015-05-28 11:37:56Oracle研习者中级
日期:2015-05-11 14:39:29Oracle研习者初级
日期:2014-10-09 15:10:03Oracle研习者中级
日期:2013-08-25 14:25:49Hadoop研习者初级
日期:2018-01-11 17:33:01
发表于 2017-8-29 09:18 | 显示全部楼层
谢谢分享。谢谢分享。谢谢分享。
回复 支持 反对

使用道具 举报

论坛徽章:
35
数据陷阱解读徽章
日期:2017-09-04 17:10:44Kaggle徽章
日期:2017-12-25 17:28:27Kaggle徽章
日期:2017-12-25 17:28:41NLP徽章
日期:2017-12-25 17:31:09Julia徽章
日期:2017-12-25 17:39:25python徽章
日期:2017-12-28 17:08:21算法导论徽章
日期:2017-12-28 17:08:38mysql徽章
日期:2018-01-18 18:01:34Oracle研习者高级
日期:2018-01-18 18:02:20Mycat徽章
日期:2018-01-25 17:05:58python徽章
日期:2018-01-25 17:06:49mysql徽章
日期:2018-02-01 17:47:18
发表于 2017-9-2 11:39 | 显示全部楼层
感谢分享,对Mahout下调用算法又了解多了一层。
回复 支持 反对

使用道具 举报

论坛徽章:
9
统计徽章
日期:2016-11-24 11:28:37Java徽章
日期:2016-12-08 15:36:40机器学习徽章
日期:2017-02-23 15:58:11矩阵计算徽章
日期:2017-05-11 17:16:01scala徽章
日期:2017-06-22 17:16:20金融徽章
日期:2017-09-04 17:17:02Hadoop研习者初级
日期:2017-09-19 10:58:29算法导论徽章
日期:2017-10-20 16:37:21Hadoop研习者初级
日期:2018-01-11 17:33:01
发表于 2017-9-3 21:17 | 显示全部楼层
不错的资料,谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-9-20 19:55 , Processed in 0.215828 second(s), 46 queries .