mahout 查看kmeans结果的命令
$mahout seqdumper -i output/clusters-1/part-r-00000
直接在控制台上显示,要写入文件可以在后面加上-o <输出路径>
mahout中的kmeans结果分析
运行官网上的mahout kmeas示例,结果文件夹有clusteredPoints,clusters-N,data,用命令mahout seqdumper仔细看了一下结果文件
clusteredPoints:存放的是最后聚类的结果,将cluster-id和documents-id都展示出来了,用mahout seqdumper读clusteredPoints结果的key-value类型是(IntWritable,WeightedVectorWritable)
clusters-N:是第N次聚类的结果,其中n为某类的样本数目,c为各类各属性的中心,r为各类属性的半径。 clusters-N结果类型是(Text,Cluster)
data:存放的是原始数据,这个文件夹下的文件可以用mahout vectordump来读取,原始数据是向量形式的,其它的都只能用mahout seqdumper来读取,向量文件也可以用mahout seqdumper来读取,只是用vectordump读取出来的是数字结果,没有对应的key,用seqdumper读出来的可以看到key,即对应的url,而value读出来的是一个类描述,而不是数组向量
为什么mahout seqdumper可以读任何SequenceFiles文件呢?看了一下源文件,是因为用的reader.getValueClass().newInstance()去读取的
clusters-0:读出来的结果(key,value)类型是(Text,Canopy),我猜应该是随机从原始数据里取出五个点来做初始聚类中心点,看到里面有RandomAccessSparseVector类,而后成的clusters-N读出来的(key,value)都是(Text,Cluster)类型,查了一下Canopy,说Canopy 聚类算法经常用于 K 均值聚类算法的预处理,用来找合适的 k 值和簇中心。
bin/mahout clusterdump --seqFileDir output/clusters-10 --pointsDir output/clusteredPoints --output /home/test/output
这个命令会将每一类的点列出来,seqFileDir指向的目录存放的是某类有几个点和该类的质心点及半径,即clusters-N目录,pointsDir指向的是所有输入点归于哪一类,即clusteredPoints目录,两者联合起来,就可以列举出属于同一类的所有点
注意seqFileDir指向的目录,要是最后一次迭代的结果目录,最后一次迭代的结果才是最终的结果
mahout Kmeans聚类有两个重要参数:收敛Delta和最大迭代次数.所以有时候改敛时,并还没有达到最大迭代次数
关于mahout命令的运行的几点说明
1.如果没设置HADOOP_HOME,mahout seqdumper的输入路径是本地的目录,而不是HDFS上的目录,如果要查看HDFS上的结果,需要先将文件从HDFS上拷下来,当设置了HADOOP_HOME后,用seqdumper去查看结果时,输入路径则是HDFS上的目录。
2.读写路径跟源文件中是不是用到hadoop的FileSystem类无关,前面一直理解错了,以为用到这个类,就认为一定是在HDFS上操作,自己写了一个简单的SequenceFile文件读写测试,发现刚开始run as->java application,读写操作是操作的本地目录,如果run as->run on hadoop,则读写操作就在HDFS上,将hadoop停掉后,此时在去run as->java application,一直会提示连接不到hdfs,难道一次操作在hdfs上后,后面不管是run as->java application,还是run as->run on hadoop,都必须是在hdsf上吗?有知道原因的大侠,还请赐教!hadoop在启动过后,需要等一段时间,因为还在安全模式下,此时不能在hdfs上创建文件
3.将(Text,ParseText)->(Text,Text),这样才能用seq2sparse将文本转成向量,如果不这样的话,必须自己将文本信息用tfidf算法转成对应的数组,然后再由
RandomAccessSparseVector类或DenseVector类包装成向量,因为现有的算法中,还没有直接处理文本的,全都要转成数字来度量特征,然后根据某种条件收敛,从这里也可以看出计算机对数学的依赖有多大了,自然语言是不好处理的。
mahout 查看kmeans结果的命令的更多相关文章
- (转)mahout中k-means例子的运行
首先简单说明下,mahout下处理的文件必须是SequenceFile格式的,所以需要把txtfile转换成sequenceFile.SequenceFile是hadoop中的一个类,允 ...
- mahout中KMeans算法
本博文主要内容有 1.kmeans算法简介 2.kmeans执行过程 3.关于查看mahout中聚类结果的一些注意事项 4.kmeans算法图解 5.mahout的kmeans算法实现 ...
- Linux常用命令学习4---(挂载命令mount umount、用户登陆查看和用户交互命令 w who last lastlog)
紧接着上一篇Linux的命令行的学习:Linux学习3---(文件的压缩和解压缩命令zip unzip tar.关机和重启命令shutdown reboot……) 1.挂载命令 简介 ...
- 查看linux系统版本命令 (转)
查看linux系统版本命令 分类: Linux 知识小结2011-10-10 15:26 240162人阅读 评论(9) 收藏 举报 linuxredhatdebianx86susesun 一.查看内 ...
- SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace)
SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace) DBA 日常管理工作中,很重要一项工作就是监视数据库文件大小,及日志文件大小.如果你管理数据库的有很 ...
- Linux下查看文件内容的命令
查看文件内容的命令: cat 由第一行开始显示内容,并将所有内容输出 tac 从最后一行倒序显示内容,并将所有内容输出 more 根据窗口大小,一页一页的现实文件内容 less ...
- 查看Linux内核版本命令
一.查看Linux内核版本命令(两种方法): .cat /proc/version .uname -a 二.查看Linux系统版本的命令(3种方法): .lsb_release -a即可列出所有版本信 ...
- svn查看代码作者的命令
svn blame **.java | grep ** svn查看代码作者的命令
- mahout中kmeans算法和Canopy算法实现原理
本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...
随机推荐
- 使用CSS灵活的盒子
CSS3灵活的盒子,或flexbox,是一个布局模式提供页面上的元素的安排这样的元素表现可以预见当页面布局必须适应不同屏幕大小和不同的显示设备.对于许多应用程序,灵活的块盒模型提供了一个改进模型,它不 ...
- python的历史与优劣
历史 Python的创始人是Guido van Rossum,在发明Python语言之前Guido曾参与过一门称作ABC的语言的设计,ABC是专门为非专业程序员设计的:Guido在Python语言的设 ...
- Heartbeat+DRBD+MySQL高可用方案【转】
转自Heartbeat+DRBD+MySQL高可用方案 - yayun - 博客园 http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用 ...
- ActionBar更改背景颜色(主题)
1.默认是黑色的背景, 2.更改主题theme为Theme.AppCompat.Light即可,清单文件主题如下: <application android:name="com.ith ...
- HttpHandler 实现文件下载
一个浏览者发出的请求都是由实现了IHttpHandler接口的对象进行响应,由于下次访问不一定还是上次那个对象进行响应,上次响应完毕对象可能已经被销毁了,写的类变量值早就不存在了,因此不将状态信息保存 ...
- shell脚本一键同步集群时间
shell脚本一键同步集群时间 弋嘤捕大 椿澄辄 ψ壤 茇徜燕 ㄢ交涔沔 阚龇棚绍 テ趼蜱棣 灵打了个寒颤也没有去甩脱愣是拖着 喇吉辔 秋北酏崖 琮淄脸酷 茇呶剑 莲夤罱 陕遇骸淫 ...
- project文件问题
到编译文件中看看,红色的删除,坤哥这样做的 .
- sqlserver 批量修改表前缀
先把第一句话放到sqlserver查询器中执行一下.然后把查询结果复制出来,进行编辑...一看你就懂了..简单的sql语句拼装 select ' exec sp_rename "' + na ...
- spring securiy使用总结
我们常见的几个功能: 注册后直接登录,并且remember-me这种在网上找到很多注册后登录的,但是remember-me没有.其实解决方案还是看源码比较方便.a. 装载authenticationM ...
- php获取当前文件绝对路径
php如何获取当前文件的绝对路径. dirname(__FILE__) 函数返回的是脚本所在在的路径 <?php $basedir = dirname(__FILE__); echo $base ...