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 ...
随机推荐
- spring mvc实现Restful返回xml格式数据
最近,想在自己的小项目中搭建一个Restful风格的服务接口api,项目用的spring mvc 3,听说spring mvc本身就能十分方便的支持restful的实现,于是查询了下资料,果然非常强大 ...
- Oracle数据库体系结构(6)数据库归档重做日志文件管理
归档重做日志文件的概念和选择 Oracle数据库能够把已经写满了的重做日志文件保存到一个或多个指定的离线位置,这种保存的文件为归档重做日志文件.通常情况下一个归档重做日志时一个被LGWR写满的重做日志 ...
- while & do-while
while的形式——while(条件表达式){循环体:} 当满足条件表达式时,执行循环体,之后继续验证是否满足条件表达式,满足继续执行循环体,之后重复,直到不满足条件表达式,循环结束. 先判断, ...
- <a href
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEnco ...
- TortoiseGit做push时提示Disconnected: No supported authentication methods available (server sent: publickey)错误
通过Git从远程服务器上获得到自己的项目,但是通过TortoiseGit做push时提示Disconnected: No supported authentication methods availa ...
- Codeforces 372B Counting Rectangles is Fun:dp套dp
题目链接:http://codeforces.com/problemset/problem/372/B 题意: 给你一个n*m的01矩阵(1 <= n,m <= 40). 然后有t组询问( ...
- Appium-xpath详解
一.xpath简介 XPath就是XML 路径,练习XPath的使用可以直接使用火狐浏览器 火狐浏览器下载 free bug和free path两个插件. 手机xpath可以自己写,路径关键字选cla ...
- java支付宝开发-00-资源帖
一.一些重要的官方文档 1.沙箱登录 2.沙箱环境使用说明 3.如何使用沙箱环境 4.当面付产品介绍 5.扫码支付接入指引 6.当面付快速接入 7.当面付接入必读 8.当面付进阶功能 9.当面付异步通 ...
- codeforces 631B B. Print Check
B. Print Check time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- C++中抽象类和多继承
C++中没有java中接口的概念,但是可以使用抽象类来模拟java中的接口. 工程上的多继承 工程开发中的多继承几乎是不被使用的 多继承带来的代码的复杂性,远远大于其代码带来的便利性. 多继承对代码的 ...