mahout运行测试与数据挖掘算法之聚类分析(一)kmeans算法解析
在使用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算法解析的更多相关文章
- 数据挖掘案例:基于 ReliefF和K-means算法的应用
数据挖掘案例:基于 ReliefF和K-means算法的应用 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识.数据挖掘(DataMiriing),指的是从大型数据库 ...
- 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- Kmeans算法学习与SparkMlLib Kmeans算法尝试
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的 ...
- 数据挖掘算法之k-means算法
系列文章:数据挖掘算法之决策树算法 k-means算法可以说是数据挖掘中十大经典算法之一了,属于无监督的学习.该算法由此衍生出了很多类k-means算法,比如k中心点等等,在数据挖掘领域, ...
- 数据挖掘算法学习(一)K-Means算法
博主近期实习開始接触数据挖掘,将学习笔记分享给大家.眼下用的软件是weka.下篇文章会着重解说. 转载请附上链接http://blog.csdn.net/iemyxie/article/details ...
- 数据挖掘经典算法——K-means算法
算法描述 K-means算法是一种被广泛使用的基于划分的聚类算法,目的是将n个对象会分成k个簇.算法的具体描述如下: 随机选取k个对象作为簇中心: Do 计算所有对象到这k个簇中心的距离,将距离最近的 ...
- k-means算法之见解(一)
k-menas算法之见解 主要内容: 一.引言 二.k-means聚类算法 一.引言: 先说个K-means算法很高大上的用处,来开始新的算法学习.美国竞选总统,选票由公民投出,总统由大家决定.在20 ...
- K-means算法的原理、优缺点及改进(转)
文章内容转载自:http://blog.csdn.net/sinat_35512245/article/details/55051306 ...
- K-Means算法Demo
简介:本Demo是参照这个网站上的Demo自己用Java实现的.将Java打包为Jar,再将Jar转为exe,源代码及程序Demo下载请点我. K-Means算法简介 我尽量用通俗易懂但不规范的语言来 ...
随机推荐
- Jasper语音助理
1. 介绍 Jasper是一款基于树莓派的开源语音控制助理, 使用Python语言开发. Jasper工作原理主要是设备被动监听麦克风, 当收到唤醒关键字时进入主动监听模式, 此时收到语音指令后进行语 ...
- Long类型的坑,第一次遇见
注意下面标红的code,如果不加这段代码会有问题,原因是一个比较的是地址,一个比较的是value,会导致不同,程序逻辑出错!加上后比较的就是值!!! allViewMap.put("proj ...
- 【LeedCode】3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- ThinkPHP的静态化页面方法
原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下. protected function buildHtml($htmlf ...
- 「转」基于Jmeter和Jenkins搭建性能测试框架
搭建这个性能测试框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的时间. 1.性能测试流程 该性能测试框架工 ...
- HDU 2552 三足鼎立(数学函数)
/* <耶律javac++>欲找出三人所在逐个击破, 现在他发现威士忌的位置s,天外来客的位置u, 不过很难探查到亦纷菲v所在何处,只能知道三人满足关系: arctan(1/s) = ar ...
- 用JDBC操作MySQL——获取表的大小
JDBC中获取MySQL我们有时需要获得表的大小,这包括了表的行数和列数,我们可以分别用以下的方法得到: 假设我们得到了一个ResultSet对象rs,则操作如下: 读取结果集前获取行数: rs.la ...
- 见微知著(二):解析ctf中的pwn--怎么利用double free
这次选2015年的0ctf的一道非常经典的pwn题,感觉这个题目作为练习题来理解堆还是很棒的. 运行起来,可以看出是一个实现类似于记事本功能的程序,就这一点而言,基本是套路了,功能都试一遍之后,就可以 ...
- RPD Volume 168 Issue 4 March 2016 评论5
Monte Carlo simulation of secondary radiation exposure from high-energy photon therapy using an anth ...
- 子域名/目录暴力工具Gobuster
子域名/目录暴力工具Gobuster Gobuster是Kali Linux默认安装的一款暴力扫描工具.它是使用Go语言编写的命令行工具,具备优异的执行效率和并发性能.该工具支持对子域名和Web目 ...