使用mahout进行Kmeans聚类
问题描述:
我正在尝试在数据使用上执行kmeans算法。运行时必须传递的选项需要一个到初始集群的路径。任何人都可以告诉我,即使在启动算法之前,我们如何拥有初始簇?使用mahout进行Kmeans聚类
bin/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> \
-x <maximum number of iterations> \
-cd <optional convergence delta. Default is 0.5> \
-ow <overwrite output directory if present>
-cl <run input vector clustering after computing Canopies>
-xm <execution method: sequential or mapreduce>
答
A)亨利马乌是slooooow。如果您的数据适合主内存,请使用其他工具,如ELKI。他们远远超过了Mahout。如果你的数据不适合主存:你确定k-means对你的数据有什么意义吗?做一个不能解决问题的计算是没有意义的。从样本开始,首先检查它是否可用,然后放大。 Mahout是最后的选择:如果你绝对需要在所有数据上计算这个数据,并且其他所有数据都失败了,那么使用Mahout。
B)阅读所有的文档......亨利马乌k均值的文档中的下一行说:
注:如果
-k
提供参数,在-c
目录中的任何集群将被覆盖,-k
随机点将从输入向量中采样成为初始聚类中心。
换句话说:如果你知道初始聚类中心,通过-c
提供给他们做不设置-k
。否则一个空的-c
文件夹是好的,如果您提供-k
,要采样的聚类中心的数量。
[这里](http://unmeshasreeveni.blogspot.in/2014/11/how-to-run-k-means-clustering-in-mahout.html)是运行综合控制数据的一个例子。 – 2014-12-08 03:38:20