StreamingKMeans 是 mahout .8 中的一项新功能。
有关其算法的更多详细信息,请参见:
N. Ailon、R. Jaiswal、C. Monteleoni 的“流式 k 均值近似”
http://books.nips.cc/papers/files/nips22/NIPS2009_1085.pdf
M. Shindler、A. Wong、A. Meyerson 的“大型数据集的快速准确 k 均值”,
http://books.nips.cc/papers/files/nips24/NIPS2011_1271.pdf
正如你所提到的,没有关于它的使用的文章。与其他版本的聚类算法一样,有一个驱动程序,您可以将一些配置参数作为字符串数组传递,它将对您的数据进行聚类:
String[] args1 = new String[] {"-i","/home/name/workspace/XXXXX-vectors/tfidf-vectors","-o","/home/name/workspace/XXXXX-vectors/tfidf-vectors/SKM-Main-result/","--estimatedNumMapClusters","200","--searchSize","2","-k","12", "--numBallKMeansRuns","3", "--distanceMeasure","org.apache.mahout.common.distance.CosineDistanceMeasure"};
StreamingKMeansDriver.main(args1);
为了获取重要参数的描述,只需将“-iiii”之类的错误作为第一个参数。它将显示参数、它们的描述和默认值。
但是如果你不想这样使用它,只需阅读 StreamingKMeansMapper、StreamingKmeansReducer、StreamingKmeansThread,这 3 个类代码可以帮助你了解算法的用法并根据需要对其进行定制。
Mapper 使用 StreamingKMeans 生成估计的输入数据集群。 for get k final cluster Reducer 获取中间点(上一步生成的质心),并通过使用 ballKmeans 将这些中间点聚类到 K 个集群。