Mahout应用(一)
Mahout应用(一)
Mahout 是应用于hadoop上的数据挖掘工具(废话不多说)
这里先简单介绍一下mahout的一般使用方法。
拿kmeans为列子
Mahout中的kmeans所需要的输入比较特殊需要的输入类型为VectorWritable类型并且是SequenceFile格式存储(一般来讲为了方便查看数据我比较喜欢直接用Text格式直接存储)使用SequenceFile主要是因为可压缩和数据读入速度,mahout认为我们的输出绝大多数不需要看而是为了当做以后的输入。VectorWritable的应用我们以后再说。
Mahout中有一个类叫做InputDriver是用来将输入的文件转化成VectorWritable格式,这里需要注意一下它需要的输入为Text格式存储的输出为SequenceFile格式,也就是Kmeans所需要的格式,每一行为一个Vector必须用空格分隔。

因为不知道读者的mahout版本所以我这里将用mahout.jar来代表mahout的jar包。
假设HDFS上的输入路径为input,输出为buf1 则可以使用命令行直接进行转换:
hadoop jar mahout.jar org.apache.mahout.clustering.conversion.InputDriver -i input -o buf1
这里的数据为大家截个图:

然后就可以使用mahout中的kmeans算法来进行聚类了
这里可以直接使用bin/mahout 来直接操作。
这里我们的输入是上次的输出buf1,输出为output,需要一个路径来存放聚类的中心 buf2,那么命令行代码例子为:
bin/mahout kmeans\
--input buf1\
--output output\
-k 5 \
-c buf2\
--maxIter 100\
-cd 0.001\
-dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure \
-cl
为大家解释一下参数,input和output就不解释了,k参数意思为要聚成5类,c参数代表着聚类中心存放的位置,maxIter为最大迭代次数,cd为收敛到多少可以停止,dm为使用的距离公式,有cl参数意味着最后的输出会多一个聚类中心点clusteredPoints(这个是挺必要的为了方便查看结果建议有这个参数如果不查看结果可以没有)。
在若干次mapreduce过程后,我们来查看一下结果:
bin/mahout clusterdump\
--seqFileDir output/clusters-4\
--pointsDir output/clusteredPoints\
--output result.txt
笔者这里迭代四次后收敛所以是clusters-4

上图为结果,里面的c为中心,r为半径。
欢迎大牛拍砖以后会有其他工具和算法的介绍。
Mahout应用(一)的更多相关文章
- [Mahout] 完整部署过程
概述 Mahout底层依赖Hadoop,部署Mahout过程中最困难的就是Hadoop的部署 本文假设用户本身没有进行Hadoop的部署,记述部署Mahout的过程 ...
- Mahout之数据承载
转载自:https://www.douban.com/note/204399134/ 推荐数据的处理是大规模的,在集群环境下一次要处理的数据可能是数GB,所以Mahout针对推荐数据进行了优化. Pr ...
- Mahout推荐算法API详解
转载自:http://blog.fens.me/mahout-recommendation-api/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, ...
- 从源代码剖析Mahout推荐引擎
转载自:http://blog.fens.me/mahout-recommend-engine/ Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pi ...
- mahout 安装测试
1 下载 在http://archive.apache.org/dist/mahout下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息
- Hadoop里的数据挖掘应用-Mahout——学习笔记<三>
之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X的笔记 由于平时对数据挖掘做的比较多,所以优先看Mahout方向视频. Mahout有很好的扩展性与容错性(基于H ...
- 初学Mahout测试kmeans算法
预备工作: 启动hadoop集群 准备数据 Synthetic_control.data数据集下载地址http://archive.ics.uci.edu/ml/databases/synthetic ...
- Mahout安装与配置
一.安装mahout 1.下载mahout(mahout-distribution-0.9.tar.gz) http://pan.baidu.com/s/1kUtOMQb 2.解压至指定目录 我平时都 ...
- Mahout 的安装
Mahout 的安装 Mahout是Hadoop的一种高级应用.运行Mahout需要提前安装好Hadoop,Mahout只在Hadoop集群的NameNode节点上安装一个即可,其他数据节点上不需要安 ...
- Mahout源码分析之 -- 文档向量化TF-IDF
fesh个人实践,欢迎经验交流!Blog地址:http://www.cnblogs.com/fesh/p/3775429.html Mahout之SparseVectorsFromSequenceFi ...
随机推荐
- *windows文件显示后缀名
- Android scrollview嵌套listview运行后最先显示出来的位置不在顶部而是中间问题
scrollview里面嵌套了一个listview ,通过设置一个方法设置了listview的高度 现在的情况就是进到这个界面的时候看到的不是最上面 而是中间 ,该问题的解决办法为: mScrollV ...
- NDK xxxxx could not be resolved解决方法
Type '*****' could not be resolved Method '******' could not be resolved 问题解决 以下为未尝试方法,如果上面方法解 ...
- Android开发之EventBus的简单使用
参考: 1.http://blog.csdn.net/harvic880925/article/details/40660137 2.http://blog.csdn.net/harvic880925 ...
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
最近在面试Android,今天出了一个这样的题目,即如题: 我当时以为生命周期是这样的: onCreate --> onStart -- ---> onResume ---> onP ...
- android上的缓存、缓存算法和缓存框架
1.使用缓存的目的 缓存是存取数据的临时地,因为取原始数据代价太大了,加了缓存,可以取得快些.缓存可以认为是原始数据的子集,它是从原始数据里复制出来的,并且为了能被取回,被加上了标志. 在andr ...
- axis : java.lang.NoSuchMethodError
Hi friends,Iam getting the following error when deploying my app in jboss error.Iam new to axis .can ...
- LA 3704 (矩阵快速幂 循环矩阵) Cellular Automaton
将这n个格子看做一个向量,每次操作都是一次线性组合,即vn+1 = Avn,所求答案为Akv0 A是一个n*n的矩阵,比如当n=5,d=1的时候: 不难发现,A是个循环矩阵,也就是将某一行所有元素统一 ...
- Asp.Net操作FTP方法
将用户上传的附件(文件.图片等)通过FTP方式传送到另外一台服务器上,从而缓解服务器压力 1.相关的文章如下: Discuz!NT中远程附件的功能实现[FTP协议] http://www.cnblog ...
- WEB前端开发成长指南
小 编注:相比起网页射击狮,操纵代码的前端攻城狮凭着双手在键盘巴拉巴拉敲出的字符,就能赋予二次元的静态页面生命,各种lovely 的~~fabulous的~~elegant的交互效果,那叫一个锦上添花 ...