在使用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. 数据挖掘案例:基于 ReliefF和K-means算法的应用

    数据挖掘案例:基于 ReliefF和K-means算法的应用 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识.数据挖掘(DataMiriing),指的是从大型数据库 ...

  2. 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

    版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...

  3. Kmeans算法学习与SparkMlLib Kmeans算法尝试

    K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的 ...

  4. 数据挖掘算法之k-means算法

    系列文章:数据挖掘算法之决策树算法       k-means算法可以说是数据挖掘中十大经典算法之一了,属于无监督的学习.该算法由此衍生出了很多类k-means算法,比如k中心点等等,在数据挖掘领域, ...

  5. 数据挖掘算法学习(一)K-Means算法

    博主近期实习開始接触数据挖掘,将学习笔记分享给大家.眼下用的软件是weka.下篇文章会着重解说. 转载请附上链接http://blog.csdn.net/iemyxie/article/details ...

  6. 数据挖掘经典算法——K-means算法

    算法描述 K-means算法是一种被广泛使用的基于划分的聚类算法,目的是将n个对象会分成k个簇.算法的具体描述如下: 随机选取k个对象作为簇中心: Do 计算所有对象到这k个簇中心的距离,将距离最近的 ...

  7. k-means算法之见解(一)

    k-menas算法之见解 主要内容: 一.引言 二.k-means聚类算法 一.引言: 先说个K-means算法很高大上的用处,来开始新的算法学习.美国竞选总统,选票由公民投出,总统由大家决定.在20 ...

  8. K-means算法的原理、优缺点及改进(转)

    文章内容转载自:http://blog.csdn.net/sinat_35512245/article/details/55051306                                ...

  9. K-Means算法Demo

    简介:本Demo是参照这个网站上的Demo自己用Java实现的.将Java打包为Jar,再将Jar转为exe,源代码及程序Demo下载请点我. K-Means算法简介 我尽量用通俗易懂但不规范的语言来 ...

随机推荐

  1. UVA 10668 Expanding Rods

    Problem A: Expanding Rods When a thin rod of length L is heated n degrees, it expands to a new lengt ...

  2. 时间戳 JS PHP MYSQL

    Unix 时间戳  Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) JS var strtime = '2014-04-23 18:55:49:123 ...

  3. k8s的回滚应用

    kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision. 默认配置下,Kubernet ...

  4. 如何设置Google Chrome的界面显示语言

    昨天不小心,把Chrome浏览器的界面语言换成了中文, 结果换不回去英文了!!! 这是为啥呀? 我本来使用的是英文界面,换成中文却不让换回原来的语言,这怎么也说不过去吧. Google了一会子也没找到 ...

  5. Interface与abstract类的区别

    含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必 ...

  6. VisualStudio 2013开发Office插件

    在VS中选择创建新项目,选择App for Office 选择mail出现的位置 Task pane The app appears in the task pane of a Microsift O ...

  7. 【转】jmeter入门教程- Jmeter教程及技巧汇总

    https://blog.csdn.net/zouxiongqqq/article/details/72843500

  8. 【转】docker之Dockerfile实践

    转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为ba ...

  9. System Center VMM请注意不同语言版本的差异

    在私有云的项目中,经常需要判断System Center一些组件的连接是否OK. 我这里有开发,和测试两个环境,开发是英文版的System Center VMM,测试用的是中文版的System Cen ...

  10. 洛谷——P3914 染色计数

    P3914 染色计数 题目描述 有一颗NN个节点的树,节点用1,2,\cdots,N1,2,⋯,N编号.你要给它染色,使得相邻节点的颜色不同.有MM种颜色,用1,2,\cdots,M1,2,⋯,M编号 ...