mahout 实现canopy
环境:
mahout-0.8
hadoop-1.1.2
ubuntu-12.04
理论这里就不说了,直接上实例:
下面举一个例子。
数据准备:
canopy.dat文件,COPY到HDFS上,文件内容如下:
8.1 8.1
7.1 7.1
6.2 6.2
7.1 7.1
2.1 2.1
1.1 1.1
0.1 0.1
3.0 3.0
算法简单说明,步骤如下:
(1) 将所有数据放进list中,选择两个距离,T1,T2,T1>T2
(2)While(list不为空)
{ 随机选择一个节点做canopy的中心;并从list删除该点; 遍历list: 对于任何一条记录,计算其到各个canopy的距离; 如果距离<T2,则给此数据打上强标记,并从list删除这条记录; 如果距离<T1,则给此数据打上弱标记; 如果到任何canopy中心的聚类都>T1,那么将这条记录作为一个新的canopy的中心,并从list中删除这个元素; }
预期的结果应该是:
Canopy 1 (8.1,8.1) :[ (8.1,8.1), (7.1,7.1), (6.2,6.2) ,(7.1,7.1) ] Canopy 2 (2.1,2.1) :[ (2.1,2.1), (1.1,1.1) ,(0.1,0.1), (3.0,3.0) ] Canopy 3 (0.1,0.1) :[ (0.1,0.1)]
下面开始用Mahout实现
# 1.将数据文件转换成向量
mahout用InputDriver数据转换时候,需要数据默认用空格分隔
mahout org.apache.mahout.clustering.conversion.InputDriver -i /user/hdfs/canopy/in/canopy.dat -o /user/hdfs/canopy/vecfile -v org.apache.mahout.math.RandomAccessSparseVector
# 2. 调用命令
mahout canopy -i /user/hdfs/canopy/vecfile -o /user/hdfs/canopy/out/result -t1 8 -t2 4 -ow -cl
参数说明:
CanopyDriver.main(args); |
|
--input (-i) |
输入路径 |
--output(-o) |
输出路径 |
--distanceMeasure(-dm) |
距离度量类的权限命名,如:”org.apache.mahout.common.distance.CosineDistanceMeasure” |
--t1 (-t1) |
t1值 (t1>t2) |
--t2 (-t2) |
t2值 |
--t3 (-t3) |
t3值,默认t3=t1 |
--t4(-t4) |
t4值,默认t4=t2 |
--overwrite (-ow) |
是否覆盖上次操作的结果 |
--clustering (-cl) |
是否执行聚类操作,即划分数据 |
--method (-method) |
默认,mapreduce。还可选sequential,执行单机模式 |
# 3.查看结果
mahout seqdumper -i /user/hdfs/canopy/out/result/clusters-0-final/part-r-00000 -o /home/hadoop/output/result
#关联各个点
mahout clusterdump -i /user/hdfs/canopy/out/result/clusters-0-final/part-r-00000 -o /home/hadoop/output/result -p /user/hdfs/canopy/out/result/clusteredPoints
C-0{n=2 c=[6.888, 6.888] r=[0.237, 0.237]}
Weight : [props - optional]: Point:
1.0: [8.100, 8.100]
1.0: [7.100, 7.100]
1.0: [6.200, 6.200]
1.0: [7.100, 7.100]
C-1{n=2 c=[1.083, 1.083] r=[0.983, 0.983]}
Weight : [props - optional]: Point:
1.0: [2.100, 2.100]
1.0: [1.100, 1.100]
1.0: [3.000, 3.000]
C-2{n=1 c=[0.100, 0.100] r=[]}
Weight : [props - optional]: Point:
1.0: [0.100, 0.100]
版权声明:本文为博主原创文章,未经博主允许不得转载。
mahout 实现canopy的更多相关文章
- Mahout之Canopy Clustering深入理解
转自:http://www.cnblogs.com/vivounicorn/archive/2011/09/23/2186483.html Mahout学习——Canopy Clustering 聚类 ...
- mahout之canopy算法简单理解
canopy是聚类算法的一种实现 它是一种快速,简单,但是不太准确的聚类算法 canopy通过两个人为确定的阈值t1,t2来对数据进行计算,可以达到将一堆混乱的数据分类成有一定规则的n个数据堆 由于c ...
- Canopy算法聚类
Canopy一般用在Kmeans之前的粗聚类.考虑到Kmeans在使用上必须要确定K的大小,而往往数据集预先不能确定K的值大小的,这样如果 K取的不合理会带来K均值的误差很大(也就是说K均值对噪声的抗 ...
- Mahout机器学习平台之聚类算法具体剖析(含实例分析)
第一部分: 学习Mahout必需要知道的资料查找技能: 学会查官方帮助文档: 解压用于安装文件(mahout-distribution-0.6.tar.gz),找到例如以下位置.我将该文件解压到win ...
- 深入浅出Hadoop Mahout数据挖掘实战(算法分析、项目实战、中文分词技术)
Mahout简介 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目, 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建 ...
- 学习Mahout(三)
开发+运行第一个Mahout的程序 代码: /** * Licensed to the Apache Software Foundation (ASF) under one or more * con ...
- hadoop文本转换为序列文件
在以前使用hadoop的时候因为mahout里面很多都要求输入文件时序列文件,所以涉及到把文本文件转换为序列文件或者序列文件转为文本文件(因为当时要分析mahout的源码,所以就要看到它的输入文件是什 ...
- 北风风hadoop课程体系
课程一.基于Linux操作系统平台下的Java语言开发(20课时)课程简介本套课程主要介绍了Linux系统下的Java环境搭建及最基础的Java语法知识.学习Linux操作系统下Java语言开发的好处 ...
- 基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma
Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握H ...
随机推荐
- 【leetcode刷题笔记】Reverse Words in a String
Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...
- crond
Crond介绍 Crond是linux系统用来定期执行命令或程序的工具. 服务 /etc/init.d/crond 命令 crontab [root@rhel6 script]# crontab -h ...
- sqlserver 2008 创建数据库的时候不是空库,里面总有数据的解决办法
SqlServer2008 里面有个系统数据库 Model 数据库,在创建新数据库的时候,会以它为模板创建,所以如果发现你的Model数据库比较大,说明里面有很多模板数据.此时如果需要去创建没有数据的 ...
- LINQ 学习路程 -- 查询操作 Expression Tree
表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y.x.<.y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构 ...
- BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊:分块
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 题意: 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆 ...
- php 简单判断是否微信浏览器
今天遇到一问题,让一个页面在微信上打开和浏览器打开显示不同的按钮,这是一个建议的方法 $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($us ...
- Python中如何开发一个注册接口小实例
import flask from flask import request #想获取到请求参数的话,就得用这个 server = flask.Flask(__name__) #吧这个python文件 ...
- message消息框
.messager.show options 在屏幕右下角显示一条消息窗口.该选项参数是一个可配置的对象:showType:定义将如何显示该消息.可用值有:null,slide,fade,show.默 ...
- linux命令学习笔记(12):more命令
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便 使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就 ...
- yahoo的30条优化规则
1.尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容.这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数.这是提高网页速 ...