在使用mahout之前要安装并启动hadoop集群

将mahout的包上传至linux中并解压即可

mahout下载地址:

点击打开链接

mahout中的算法大致可以分为三大类:

聚类,协同过滤和分类

其中

常用聚类算法有:canopy聚类,k均值算法(kmeans),模糊k均值,层次聚类,LDA聚类等

常用分类算法有:贝叶斯,逻辑回归,支持向量机,感知器,神经网络等

下面将运行mahout中自带的example例子jar包来查看mahou是否能正确运行

练习数据下载地址:

点击打开链接

上面的练习数据是用来检测kmeans聚类算法的数据

使用hadoop命令运行mahout的例子程序(确保hadoop集群已开启)

在例子代码中写死了输入的路径是/user/hadoop/testdata

将练习数据上传到hdfs中对应的testdata目录下即可

写死的输出路径是/user/hadoop/output

执行命令:

hadoop jar ~/mahout/mahout-examples-0.9-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

开始执行任务

由于聚类算法是一种迭代的过程(之后会讲解)

所欲他会一直重复的执行mr任务到符合要求(这其中的过程可能有点久。。。)

运行结果如下:

mahout无异常

执行完这个kmeans算法之后产生的文件按普通方式是查看不了的,看到的只是一堆莫名其妙的数据

需要用mahout的seqdumper命令来下载到本地linux上才能查看正常结果

查看聚类分析的结果:

./mahout seqdumper -s /user/hadoop/output/data/part-m-0000 /home/hadoop/res

之后使用cat命令即可查看

cat res | more

现在来说说什么是kmeans聚类算法

所谓聚类算法就是将一份数据,按照我们想要的或者这份数据中的规律来将数据分类的算法

例如:

现有一份杂乱的样本数据,我们希望数据最后按照某些类别来划分(红豆分为红豆,绿豆分为绿豆等意思)

聚类算法会从n个类的初始中心开始(如果没有人为设置,其会按照随机的初始中心开始)

什么意思呢?来看一张图

上图中,左一的圆圈表示原始数据在随机的初始中心划分后的的分布

但是可以看出很明显cluster1中有很多是靠近cluster2的数据点

所以kmeans会根据规则再次计算出更加合适的中心点来进行划分

这个规则就是:

计算每个数据点,到原始中心cluster1和cluster2的距离

离谁比较近就划分到谁那边去(形如中间的圆圈)

然后将cluster1和cluster2中的数据分别求平均值,得到的两个平均值成为新的cluster1和cluster2中心点

但是很明显这样划分还是不够合理

所以kmeans会继续迭代计算每个数据到新的中心点的距离

离谁比较近就划分给谁

然后在分别求平均值得到新的中心点

直到cluster1和cluster2中的数据平均值不在发生变化时认为此时是最理想的划分方式(也可以进行人工的干预)

该算法的最大优势在于简介快速。算法的关键在于初始中心的选择和计算距离的公式

最后在调用一个mahout的一个算法来测试mahout

调用fpg算法(实现计数频繁项集的算法)

测试数据下载(电商购物车数据)

点击打开链接

在mahout的bin目录下

./mahout fpg -i /user/hadoop/testdata/tail.txt -o /user/hadoop/output -method mapreduce -s 1000 -regex '[]'

各个参数的意义:

-i:指定输入数据的路径

-o:指定输出结果的路径

-method:指定使用mapreduce方法

-s:最小支持度

-regex:使用指定的正则来匹配过滤数据

同样的,运行结果的数据要通过seqdumper来查看

mahout运行测试与kmeans算法解析的更多相关文章

  1. mahout运行测试与数据挖掘算法之聚类分析(一)kmeans算法解析

    在使用mahout之前要安装并启动hadoop集群 将mahout的包上传至linux中并解压即可 mahout下载地址: 点击打开链接 mahout中的算法大致可以分为三大类: 聚类,协同过滤和分类 ...

  2. python Kmeans算法解析

    一. 概述 首先需要先介绍一下无监督学习,所谓无监督学习,就是训练样本中的标记信息是位置的,目标是通过对无标记训练样本的学习来揭示数据的内在性质以及规律.通俗得说,就是根据数据的一些内在性质,找出其内 ...

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

    利用Mahout实现在Hadoop上运行K-Means算法 一.介绍Mahout Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三个部 ...

  4. mahout中KMeans算法

    本博文主要内容有   1.kmeans算法简介 2.kmeans执行过程  3.关于查看mahout中聚类结果的一些注意事项 4.kmeans算法图解      5.mahout的kmeans算法实现 ...

  5. 初学Mahout测试kmeans算法

    预备工作: 启动hadoop集群 准备数据 Synthetic_control.data数据集下载地址http://archive.ics.uci.edu/ml/databases/synthetic ...

  6. kmeans算法实践

    这几天学习了无监督学习聚类算法Kmeans,这是聚类中非常简单的一个算法,它的算法思想与监督学习算法KNN(K近邻算法)的理论基础一样都是利用了节点之间的距离度量,不同之处在于KNN是利用了有标签的数 ...

  7. hadoop在实现kmeans算法——一个mapreduce实施

    写mapreduce程序实现kmeans算法.我们的想法可能是 1. 次迭代后的质心 2. map里.计算每一个质心与样本之间的距离,得到与样本距离最短的质心,以这个质心作为key,样本作为value ...

  8. 图像处理------K-Means算法演示

    一:数学原理 K-Means算法的作者是MacQueen, 基本的数学原理很容易理解,假设有一个像素 数据集P.我们要根据值不同将它分为两个基本的数据集合Cluster1, Cluster2,使 用K ...

  9. Mahout系列之----kmeans 聚类

    Kmeans是最经典的聚类算法之一,它的优美简单.快速高效被广泛使用. Kmeans算法描述 输入:簇的数目k:包含n个对象的数据集D. 输出:k个簇的集合. 方法: 从D中任意选择k个对象作为初始簇 ...

随机推荐

  1. Docker下使用daocloud镜像加速(基于Centos6)

    Docker加速器使用时不需要任何额外操作.就像这样下载官方Ubuntu镜像 实际操作(添加镜像源):在 /etc/sysconfig/docker下添加两条命令 other_args="- ...

  2. JAVA编程思想读书笔记(二)--容器

    接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...

  3. bazel使用汇总

    最近重构代码之后,打算在本地用bazel来作项目构建.主要是因为brpc已经支持了bazel,所以在此之前料想会简单许多. 安装比较简单,centos直接用yum就行.按照这个指示: https:// ...

  4. php获取当前域名、主机、URL、端口、参数、网址、路径、代理等【转】

    <?php //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br />"; //获取网页地址 echo $_SERVER['PH ...

  5. (bc 1002)hdu 6016 count the sheep

    Count the Sheep Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. Hibernate 单项多对一的关联映射

    在日常开发中会出现很对多对一的情况,本文介绍hibernate中多对一的关联映射. 1.设计表结构 2.创建student对象 3.创建Grade对象 4.写hbm.xml文件 5.生成数据库表 生成 ...

  7. WampServer -- “You don't have permission to access /phpmyadmin/ on this server.”

    当你安装完成wamp后,打开localhost或ip时发现已经可以运行了 但想使用phpmyadmin时,发现提示如下内容: You don't have permission to access / ...

  8. CodeM资格赛5

    早上起床太晚,最后没时间了.. 不是ac代码,下次题目在oj上线的时候再去做一下.. #include<iostream> #include<cstdio> #include& ...

  9. Ext.js 中 25种类型的Ext.panel.Tool

    通过Ext.panel.Panel的tools配置项来设置Ext.panel.Tool实例. 要注意的一点是,Ext框架提供的Ext.panel.Tool仅包含按钮图标而具体的点击事件处理函数需要我们 ...

  10. Handling Errors and Exceptions

    http://delphi.about.com/od/objectpascalide/a/errorexception.htm Unfortunately, building applications ...