`
minglaihan
  • 浏览: 16561 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

利用Mahout实现在Hadoop上运行K-Means算法

 
阅读更多

K-Means算法是基于分划分的最基本的聚类算法,是学习机器学习、数据挖掘等技术的最基本的 知识,所以掌握其运行原理是很重要的。

转载请注明出处:http://hanlaiming.freetzi.com/?p=144

一、介绍Mahout

Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎聚类分类三个部分。Mahout从设计开始就旨在建立可扩展的机器学习软件包,用于处理大数据机器学习的问题,当你正在研究的数据量大到不能在一台机器上运行时,就可以选择使用Mahout,让你的数据在Hadoop集群的进行分析。Mahout某些部分的实现直接创建在Hadoop之上,这就使得其具有进行大数据处理的能力,也是Mahout最大的优势所在。相比较于WekaRapidMiner等图形化的机器学习软件,Mahout只提供机器学习的程序包(library),不提供用户图形界面,并且Mahout并不包含所有的机器学习算法实现,这一点可以算得上是她的一个劣势,但前面提到过Mahout并不是“又一个机器学习软件”,而是要成为一个“可扩展的用于处理大数据的机器学习软件”,但是我相信会有越来越多的机器学习算法会在Mahout上面实现。[1]

二、介绍K-Means

https://cwiki.apache.org/confluence/display/MAHOUT/K-Means+Clustering#,这是Apache官网上的算法描述,简单来说就是基于划分的聚类算法,把n个对象分为k个簇,以使簇内具有较高的相似度。相似度的计算根据一个簇中对象的平均值来进行。[2]

三、在Hadoop上实现运行

1,实验环境

①hadoop集群环境:1.2.1 一个Master,两个Slaves,在开始运行kmeans时启动hadoop

②操作系统:所有机器的系统均为ubuntu12.04

③Mahout版本:采用的是0.5版

2,数据准备

数据采用的是http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,这是网上提供的一个比较不错是数据源。然后用指令 hadoop fs -put /home/hadoop/Desktop/data testdata,将在我桌面的文件data上传到HDFS的testdata目录下,这里为什么是testdata,我也正在思考,因为我本来是上传到input里,但是运行时提示could not find ....user/testdata之类的,所以现改为了testdata。

3,运行

①配置Mahout环境:在Apache官网下载Mahout的版本,我选择的是0.5,下载地址:https://cwiki.apache.org/confluence/display/MAHOUT/Downloads。然后解压到你指定的目录,将此目录路径写入/etc/profile,添加如下语句:

  • export MAHOUT_HOME=/home/hadoop/hadoop-1.2.1/mahout-distribution-0.5
  • export HADOOP_CONF_DIR=/home/hadoop/hadoop-1.2.1/conf
  • export PATH=$PATH:/home/hadoop/hadoop-1.2.1/bin:$MAHOUT_HOME/bin

然后执行 source /etc/profile。在mahout目录下执行bin/mahout命令,检测系统是否安装成功。如图:


注:此处修改环境变量有些网上提示是/etc/bash.bashrc,我也试着修改过,但是发现在我这里使环境变量生效的是profile。

②运行Mahout里自带的K-Means算法,bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job,这里启动后遇到了一点问题,提示Could not find math.vector,后来参考这篇http://jerrylead.iteye.com/blog/1188929日志解决。

4,结果

在我的环境下运行5分钟左右,最后生成一个文件,如图


四、总结

Mahout是一个很强大的数据挖掘工具,需要进行更深层的了解。

五、参考文献


分享到:
评论

相关推荐

    apache-mahout-distribution-0.11.0-src.zip

    Mahout设计时考虑了大数据的处理,它利用Hadoop MapReduce框架进行分布式计算,使得在大规模数据集上运行机器学习任务成为可能。 6. **自定义与扩展**: 拥有源码意味着您可以根据自己的需求对算法进行调整或添加...

    mahout所需jar包

    Mahout提供了对K-Means算法的高效实现,支持在Hadoop集群上并行执行。这使得处理大规模数据集成为可能,提高了算法的性能。在给定的压缩包中,包含了`mahout-distribution-0.5`版本,这个版本的Mahout已经包含了运行...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    Mahout是建立在Hadoop之上的,利用其分布式计算能力处理大规模数据集。这使得Mahout能够处理超出单台机器内存和计算能力的数据。 3. **版本差异**: - mahout-core-0.1.jar:这是早期版本,可能包含的基本功能,...

    mahout-distribution-0.8-src

    2. **聚类(Clustering)**:包括K-means、Fuzzy K-means、Canopy Clustering等算法,用于将数据集中的对象分组到相似的类别中。这些算法广泛应用于市场细分、文本分类和图像分析等领域。 3. **分类...

    mahout0.9 jar包支持hadoop2

    Apache Mahout是一个基于Hadoop的数据挖掘库,它提供了大规模机器学习算法的实现,包括推荐引擎、分类、聚类和关联规则挖掘。Mahout 0.9版本是该库的一个重要里程碑,尤其因为它是第一个全面支持Hadoop 2的版本。在...

    hadoop 2.4.1+mahout0.9环境搭建

    在Hadoop之上构建Mahout环境,可以实现高效的大规模数据挖掘和分析。 标题"hadop 2.4.1+mahout0.9环境搭建"涉及到的知识点主要包括以下几个方面: 1. **Hadoop 2.4.1**:这是Hadoop的一个重要版本,引入了YARN...

    9.Hadoop入门进阶课程_第9周_Mahout介绍、安装与应用案例.pdf

    1. **运行K-Means聚类**:通过加载数据集并运行K-Means算法来进行聚类分析。 2. **实现协同过滤推荐**:使用电影评分数据集,通过Mahout的协同过滤算法来生成推荐结果。 3. **文本挖掘**:通过对文本数据进行预处理...

    Hadoop-Mahout:使用 Mahout 在 Hadoop 上进行推荐、集群和分类

    Hadoop的MapReduce框架使得Mahout能够在多台机器上并行运行,显著提高了处理速度和效率。 五、Java编程接口 作为基于Java的项目,Mahout提供了丰富的API供开发者使用。开发者可以方便地将Mahout的算法集成到自己的...

    mahout数据挖掘

    K-Means Driver 是整个 K-Means 运行流程的控制中心,它协调 Mapper、Combiner 和 Reducer 的运行,确保整个聚类过程顺利进行。 通过上述介绍可以看出,Mahout 为数据挖掘提供了一套完整且强大的工具集,不仅支持...

    mahout-distribution-0.9.tar.gz

    Mahout充分利用了Hadoop的分布式计算能力,其大部分算法都是为MapReduce设计的,可以处理PB级别的大数据。通过Hadoop,Mahout可以在多台服务器上并行执行任务,提高计算效率。 **四、Mahout的使用流程** 1. **数据...

    mahout-distribution-0.12.2-src.tar.gz

    1. **机器学习算法**:Mahout的核心在于它提供了多种机器学习算法,包括分类(如决策树、随机森林)、聚类(如K-Means、Fuzzy K-Means)、协同过滤(用于推荐系统)等。这些算法可以处理大规模数据,并且利用Hadoop...

    maven_mahout_template-mahout-0.8

    Mahout 0.8版本是一个重要的里程碑,包含了丰富的机器学习算法,如协同过滤推荐算法、K-means聚类算法、随机森林分类算法等。这些算法都是经过优化的,能够高效地运行在大规模数据集上,尤其适合处理大数据的场景。 ...

    mahout-distribution-0.9含jar包

    这使得在集群上运行Mahout算法成为可能。 7. **可扩展性和并行化**:Mahout的算法设计考虑了并行化,可以充分利用多核CPU和分布式计算资源,提高处理速度。 8. **预处理和特征提取**: Mahout还提供了一些工具,...

    apache-mahout-distribution-0.10.2

    使用Mahout,大数据研发人员可以轻松地将这些算法集成到Hadoop环境中,利用Hadoop的分布式计算能力加速训练过程。此外,Mahout还与其他大数据工具如HBase、Cassandra和Spark有良好的集成,增强了其在大数据生态中的...

    Mahout-0.9-jar包

    2. **聚类**:包括K-Means、Fuzzy K-Means和Canopy Clustering等算法,可以对数据集进行无监督学习,将相似的数据点分组到一起,形成不同的簇。 3. **分类**:支持如Naive Bayes和Random Forest等监督学习算法,...

    Learning Apache Mahout

    - 聚类算法的应用:聚类是一种无监督学习方法,Mahout实现了诸如K-means、Fuzzy K-means、Canopy等聚类算法。书籍中通过实例教授如何对数据集进行聚类分析。 - 推荐系统的构建:推荐系统是电子商务和内容推荐等领域...

    mahout-0.3.zip

    1. **聚类**:Mahout提供了多种聚类算法,如K-means,Fuzzy K-means,和Canopy Clustering等。这些算法用于将数据集中的对象分成不同的组或簇,使得同一簇内的对象相似度较高,而不同簇之间的对象相似度较低。这对于...

Global site tag (gtag.js) - Google Analytics