mahout kmeans运行讲解二(转)

数据输入格式

测试数据

 

 

 

 

每个数据和数据之间用空格分开,数据都是double型的

 

Kmean算法在每次取数据时对所有的数据只取其中的一列

 

kmeans命令使用:

mahout kmeans \
 -i <input vectors directory> \ 输入目录
 -c <input clusters directory> \输入的簇目录
 -o <output working directory> \输出目录
 -k <optional number of initial clusters to sample from input vectors> \
 -dm <DistanceMeasure> \路径方法的类名,默认是SquaredEuclidean   

-x <maximum number of iterations> \迭代的次数
-cd <optional convergence delta. Default is 0.5> \delta的值
-ow <overwrite output directory if present>如果存在覆盖输出目录
-cl <run input vector clustering after computing Canopies>在运行Canopy算法后运行输入向量簇
-xm <execution method: sequential or mapreduce>用sequential或者mapreduce运行
注意:当-k被指定的时候,-c目录下的所有聚类都将被重写,将从输入的数据向量中随机抽取-k个点作为初始聚类的中心。

 

查看结果

 

mahout seqdumper:将SequenceFile文件转成可读的文本形式,对应的源文件是org.apache.mahout.utils.SequenceFileDumper.java
mahout vectordump:将向量文件转成可读的文本形式,对应的源文件是org.apache.mahout.utils.vectors.VectorDumper.java
mahout clusterdump:分析最后聚类的输出结果,对应的源文件是org.apache.mahout.utils.clustering.ClusterDumper.java

 

例如我的文件输出在/root/input/output,我可以

输入命令:mahout seqdumper -s /root/input/output/clusteredPoints/part-m-00000

来查看point

mahout clusterdump --seqFileDir /root/input/output/clusteredPoints/part-m-00000

 

 

 

如果直接在本地打开是会有乱码的

出现问题:但目前我还不知道如何输出到本地上,-o命令总是报错,目前只会在console上观察结果

解决:例如要输出上述的point文件,可以使用命令:mahout seqdumper -s /root/input/output/clusteredPoints/part-m-00000 -o result.txt

 

 

 

运行结果分析

 

首先Kmeans算法默认是10次迭代,所以我们得到的clusters是10个

结果文件夹有clusteredPoints,clusters-N,data,用命令mahout seqdumper仔细看了一下结果文件

 

clusteredPoints:存放的是最后聚类的结果,将cluster-id和documents-id都展示出来了,用mahout seqdumper读clusteredPoints结果的key-value类型是(IntWritable,WeightedVectorWritable)

例如之前的/root/input/output/clusteredPoints/part-m-00000文件

 

 

 

 

clusters-N:是第N次聚类的结果,其中n为某类的样本数目,c为各类各属性的中心,r为各类属性的半径。 clusters-N结果类型是(Text,Cluster)

例如要观察clusters-10的内容,可以使用命令:

mahout seqdumper -s /root/input/output/clusters-10/part-r-00000

要输出到txt文件则要在后面加上:-o xxxx.txt(xxxx是文件名)

 

 

 

data:存放的是原始数据,这个文件夹下的文件可以用mahout vectordump来读取,原始数据是向量形式的,其它的都只能用mahout seqdumper来读取,向量文件也可以用mahout seqdumper来读取,只是用vectordump读取出来的是数字结果,没有对应的key,用seqdumper读出来的可以看到key,即对应的url,而value读出来的是一个类描述,而不是数组向量

例如要查看data下的文件用命令:

mahout vectordump -s /root/input/output/data/part-m-00000/    

同样的要输出的话在后面加上 –o  xxxx.txt

 

 

 

 

转载于:https://www.cnblogs.com/chunjiaodelei/p/3696273.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值