Mahout实现k-means算法

 一、介绍Mahout

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

 二、介绍K-Means

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

三、在Hadoop上实现运行

    1,实验环境

        ①hadoop伪分布集群环境:1.2.1 ,在开始运行kmeans时启动hadoop

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

        ③Mahout版本:采用的是0.9版,并已经配置完环境变量。

   2,数据准备

        数据采用的是http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data,这是网上提供的一个比较不错是数据源。然后用指令 hadoop fs -put /home/hadoop/桌面/data /user/dong/testdata,将在我桌面的文件data上传到HDFS文件系统下。

  3,运行

       运行Mahout里自带的K-Means算法,mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job,运行完成后查看生成的文件。

Mahout实现k-means算法_第1张图片



注意:input和pointsDir的路径为hdfs系统目录下的,如果得到 wrote 0 clusters的结果,有可能是输入路径和存放聚类结果的路径不对。

参考文章:http://www.cnblogs.com/mz121star/archive/2014/04/27/3693807.html



.






你可能感兴趣的:(hadoop)