0

我使用Spark ML来运行Kmeans。我有一堆数据和三个现有的中心,例如三个中心是:[1.0,1.0,1.0],[5.0,5.0,5.0],[9.0,9.0,9.0]. 那么我怎么能指出Kmeans中心是上述三个向量。 我看到Kmean对象有种子参数,但种子参数是一个长类型而不是数组。那么我怎么能告诉Spark Kmeans只使用现有的聚类中心。如何设置Spark Kmeans初始中心

或者说,我不明白种子在Spark Kmeans中的含义是什么,我想种子应该是一个向量的数组,它代表运行聚类之前指定的中心。

回答

2

事实上,seed并不意味着你的想法,即它不用于“播种”(初始化)聚类中心,而只是用于设置随机种子 - 你可以在文档中证实了这一点为ScalaPython蜜蜂。据我所知,目前(Spark 2.1)无法为Spark ML中的k-means提供初始聚类中心(Spark MLlib参见this answer)。 initMode参数,根据文档:

可以是“随机”选择随机点作为初始聚类中心,或“k-means ||”使用k-means ++的并行变体)

+0

谢谢,请问通常如何设置种子数?一个较小的值还是一个非常大的值? – Jack

+0

@Jack没关系;它不影响性能,只有当你希望你的结果完全可重现时,你才需要明确地设置它 - 看看这个SO答案(或者只是谷歌的'随机种子')http://stackoverflow.com/questions/ 33973817 /什么,是最种子在-wekas-simplekmeans-人聚类 – desertnaut