`
bit1129
  • 浏览: 1069685 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析

 
阅读更多

1.Mahout环境搭建

 1.下载Mahout

http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz

 

 2.解压Mahout

 3. 配置环境变量

vim /etc/profile

export HADOOP_HOME=/home/hadoop/software/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$PATH

export MAHOUT_HOME=/home/hadoop/software/mahout-distribution-0.10.0
export PATH=$MAHOUT_HOME/bin:$PATH

 

4. Mahout依赖于Hadoop执行MapReduce作业,不同于一般的添加Hadoop依赖的方式,Mahout不需要修改它专有的配置文件进行Hadoop配置,只要在环境变量中添加HADOOP_HOME即可

 

2. Mahout Naive Bayes算法的执行流程

1. 针对样本文件创建Sequence File
2. 将Sequence File转换为tfidf向量文件
3. 根据tdidf向量文件创建training向量文件和测试向量文件
4. 训练Naive Bayes模型,输入为训练向量文件,输出为训练模型文件
5.1 基于训练向量文件进行测试
5.2 基于测试向量文件进行测试

 

3.具体流程

1.启动Mahout 20newsgroups程序

1. 运行脚本./examples/bin/classify-20newsgroups.sh

 

2.下载数据文件并上传到HDFS中

 

1. 数据文件(20news-bydate.tar.gz)下载到/tmp/mahout-work-hadoop目录下,并解压至本地/tmp/mahout-work-hadoop/20news-all目录下,目录下的数据文件是原始的文本内容.

2. 将数据文件上传到HDFS的/tmp/mahout-work-hadoop/20news-all目录下,执行如下HDFS命令

 

/home/hadoop/software/hadoop-2.5.2/bin/hdfs dfs -put /tmp/mahout-work-hadoop/20news-all /tmp/mahout-work-hadoop/

 此时,HDFS上包含如下路径/tmp/mahout-work-hadoop/20news-all,这个目录下包含了20newsgroup的原始文件

 

3. 根据原始数据创建Sequence Files

 

1.通过执行如下的命令,为原始的数据20newsgroups创建Sequence Files

 

./bin/mahout seqdirectory -i /tmp/mahout-work-hadoop/20news-all -o /tmp/mahout-work-hadoop/20news-seq -ow

 

通过上面的命令可以看到,输入输出文件目录都是在HDFS上,产出的Sequence Files放于HDFS的/tmp/mahout-work-hadoop/20news-seq目录下,如下所示

 

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-seq
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:13 /tmp/mahout-work-hadoop/20news-seq/_SUCCESS
-rw-r--r--   1 hadoop supergroup   19202391 2015-05-22 07:13 /tmp/mahout-work-hadoop/20news-seq/part-m-00000

 根据这个显示信息,mahout seqdirectory触发了Map任务,产生的part-m-00000文件的大小大约19M

 

4. 将Sequence Files转换为Vector

 

1.执行如下命令,将Sequence Files转换为向量,

 

./bin/mahout seq2sparse -i /tmp/mahout-work-hadoop/20news-seq -o /tmp/mahout-work-hadoop/20news-vectors -lnorm -nv -wt tfidf

 

通过上面的命令可知,生成的向量文件存放于HDFS的/tmp/mahout-work-hadoop/20news-vectors目录下

 

2.HDFS的/tmp/mahout-work-hadoop/20news-vectors目录下内容是

 

 

drwxr-xr-x   - hadoop supergroup          0 2015-05-22 07:18 /tmp/mahout-work-hadoop/20news-vectors/df-count
-rw-r--r--   1 hadoop supergroup    1937084 2015-05-22 07:15 /tmp/mahout-work-hadoop/20news-vectors/dictionary.file-0
-rw-r--r--   1 hadoop supergroup    1890053 2015-05-22 07:18 /tmp/mahout-work-hadoop/20news-vectors/frequency.file-0
drwxr-xr-x   - hadoop supergroup          0 2015-05-22 07:20 /tmp/mahout-work-hadoop/20news-vectors/tf-vectors
drwxr-xr-x   - hadoop supergroup          0 2015-05-22 07:21 /tmp/mahout-work-hadoop/20news-vectors/tfidf-vectors
drwxr-xr-x   - hadoop supergroup          0 2015-05-22 07:14 /tmp/mahout-work-hadoop/20news-vectors/tokenized-documents
drwxr-xr-x   - hadoop supergroup          0 2015-05-22 07:15 /tmp/mahout-work-hadoop/20news-vectors/wordcount

 

20news-vectors目录下有两个文件(dictionary.file-0和frequency.file.0)以及五个目录

 

2.1 df-count目录

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-vectors/df-count
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:18 /tmp/mahout-work-hadoop/20news-vectors/df-count/_SUCCESS
-rw-r--r--   1 hadoop supergroup    1890073 2015-05-22 07:18 /tmp/mahout-work-hadoop/20news-vectors/df-count/part-r-00000

 

2.2 tf-vectors目录

 

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-vectors/tf-vectors
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:20 /tmp/mahout-work-hadoop/20news-vectors/tf-vectors/_SUCCESS
-rw-r--r--   1 hadoop supergroup   28689283 2015-05-22 07:20 /tmp/mahout-work-hadoop/20news-vectors/tf-vectors/part-r-00000

 

2.3 tfidf-vectors目录

 

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-vectors/tfidf-vectors
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:21 /tmp/mahout-work-hadoop/20news-vectors/tfidf-vectors/_SUCCESS
-rw-r--r--   1 hadoop supergroup   28689283 2015-05-22 07:21 /tmp/mahout-work-hadoop/20news-vectors/tfidf-vectors/part-r-00000

 

2.4 tokenized-documents

 

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-vectors/tokenized-documents
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:14 /tmp/mahout-work-hadoop/20news-vectors/tokenized-documents/_SUCCESS
-rw-r--r--   1 hadoop supergroup   27503580 2015-05-22 07:14 /tmp/mahout-work-hadoop/20news-vectors/tokenized-documents/part-m-00000

 

2.5 wordcount

 

[hadoop@hadoop ~]$ hdfs dfs -ls /tmp/mahout-work-hadoop/20news-vectors/wordcount
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2015-05-22 07:15 /tmp/mahout-work-hadoop/20news-vectors/wordcount/_SUCCESS
-rw-r--r--   1 hadoop supergroup    2315037 2015-05-22 07:15 /tmp/mahout-work-hadoop/20news-vectors/wordcount/part-r-00000

 

3. 以上2个文件和目录的生成过程

 

3.1 通过Map任务生成tokenized-documents

 

SparseVectorsFromSequenceFiles: Tokenizing documents in /tmp/mahout-work-hadoop/20news-seq

 

3.2 根据Tokenized-Documents生成Term Frequency Vectors

这是一个Map Reduce任务,生成的TFV保存在wordcount目录下

 

15/05/22 07:14:54 INFO SparseVectorsFromSequenceFiles: Creating Term Frequency Vectors
15/05/22 07:14:54 INFO DictionaryVectorizer: Creating dictionary from /tmp/mahout-work-hadoop/20news-vectors/tokenized-documents and saving at /tmp/mahout-work-hadoop/20news-vectors/wordcount

 

 3.3 计算IDF

这是一个MapReduce任务,生成的文件放置于df-count目录下

15/05/22 07:17:34 INFO SparseVectorsFromSequenceFiles: Calculating IDF

 

 

3. 训练Bayes Model

通过如下命令生成Bayes Model

./bin/mahout trainnb -i /tmp/mahout-work-hadoop/20news-train-vectors -o /tmp/mahout-work-hadoop/model -li /tmp/mahout-work-hadoop/labelindex -ow -c

 

通过命令可以看出,为Bayes模型的训练提供的输入是/tmp/mahout-work-hadoop/20news-train-vectors,输出是/tmp/mahout-work-hadoop/model

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    基于Java+Mahout的协同过滤推荐算法图书推荐系统源码+项目说明.zip

    基于Java+Mahout的协同过滤推荐算法图书推荐系统源码+项目说明.zip 基于协同过滤的书籍推荐系统,图书推荐系统 最新版本,在原先手动计算皮尔逊相似度和评分矩阵的基础上添加了Mahout实现的协同过滤推荐算法。 ...

    mahout聚类算法

    Mahout 聚类算法是数据挖掘和机器学习领域中的一种重要算法,它可以将相似的数据点聚集在一起,以便更好地理解和分析数据。Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、Spectral Clustering...

    基于Mahout分布式协同过滤推荐算法分析与实现.pdf

    为了解决这一问题,Apache Mahout在Hadoop平台上实现了基于项目的分布式协同过滤推荐算法。Mahout是一个开源的机器学习框架,它利用Hadoop强大的存储和计算能力,将协同过滤推荐算法向分布式方向进行了扩展。该算法...

    基于Mahout实现协同过滤推荐算法的电影推荐系统.zip

    本项目"基于Mahout实现协同过滤推荐算法的电影推荐系统"旨在利用Apache Mahout这一开源机器学习库,构建一个能够为用户推荐个性化电影的系统。以下将详细介绍该系统的相关知识点: 1. **协同过滤推荐算法**: 协同...

    基于Mahout协同过滤实现图书推荐系统-书籍推荐系统源码+项目说明.zip

    最新版本,在原先手动计算皮尔逊相似度和评分矩阵的基础上添加了Mahout实现的协同过滤推荐算法. 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。...

    基于用户的协同过滤算法Mahout实现

    该资源是在Eclipse平台里,使用Mahout库的API,实现基于用户的协同过滤算法,从而进行商品推荐。 软件环境是:win7 64位 +Eclipse4.4 + jdk1.6, 用到了7个.jar包, 分别为:commons-logging-1.2.jar, commons-...

    测试mahout推荐算法的数据集

    Apache Mahout是一个基于Hadoop的数据挖掘库,它提供了多种推荐算法的实现,如协同过滤、基于内容的推荐以及混合推荐方法。 Mahout的协同过滤算法是其核心功能之一,它通过分析用户的历史行为来预测他们可能感兴趣...

    mahout的基于用户的推荐Demo

    在这个“mahout的基于用户的推荐Demo”中,我们将深入探讨如何利用Mahout构建一个简单的用户基于的推荐系统。 ### 1. Mahout简介 Mahout源于Hadoop生态系统,它提供了可扩展的机器学习算法,支持大规模数据集的...

    基于Hadoop-Mahout的分布式课程推荐算法.pdf

    通过以上知识点的分析,可以看出基于Hadoop-Mahout的分布式课程推荐算法具有重要的研究价值和实际应用意义。随着在线教育的不断发展和用户个性化需求的提升,推荐系统将会在在线学习平台扮演越来越重要的角色。而...

    基于mahout的协同过滤算法实现

    《基于Mahout的协同过滤算法实现详解》 在大数据领域,推荐系统已成为不可或缺的一部分,它能够根据用户的历史行为和偏好,为用户提供个性化的产品或服务推荐。Mahout作为Apache的一个开源项目,提供了丰富的机器...

    基于协同过滤算法的电影推荐系统.docx

    Taste 包含了多种推荐算法的实现,如基于用户的、基于物品的,还有SlopeOne算法等,同时提供扩展接口,允许开发者自定义推荐算法。 DataModel 是 Taste 中的一个关键组件,它负责存储用户喜好信息,可以是从数据库...

    电影推荐系统-基于Mahout实现的协同过滤推荐算法的电影推荐系统-项目源码-优质项目实战.zip

    电影推荐系统_基于Mahout实现的协同过滤推荐算法的电影推荐系统_项目源码_优质项目实战

    mahout贝叶斯算法拓展

    mahout中的贝叶斯算法的拓展开发包,提供了相关接口可以供用户调用,直接即可跑出结果,相关运行方式参考blog《mahout贝叶斯算法开发思路(拓展篇)》

    Mahout算法详解

    Mahout提供了丰富的推荐算法实现,包括单机内存算法和基于Hadoop的分布式算法。 - **单机内存算法实现**:适合处理中小规模数据(如1GB至10GB),算法配置灵活,易于实现。但受限于单机资源,难以应对大规模数据...

    Mahout算法解析与案例实战.

    Mahout算法解析与案例实战_PDF电子书下载 带书签目录 完整版【编辑推荐】, 全面分析Mahout算法库中不同模块中各个算法的原理及其Mahout实现流程, 每个算法都辅之以实战案例,同时还包括4个系统级案例,实战性强, ...

    基于java+Mahout实现协同过滤推荐算法的电影推荐系统+源码(毕业设计&课程设计&项目开发)

    基于java+Mahout实现协同过滤推荐算法的电影推荐系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于java+Mahout实现协同过滤推荐算法的电影推荐系统+...

Global site tag (gtag.js) - Google Analytics