如何设置Spark Kmeans的初始中心

3
我正在使用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中种子的含义,我认为种子应该是一个向量数组,表示在运行聚类之前指定的中心点。
1个回答

4

实际上,seed并不是用于“种子”(初始化)聚类中心的意思,而仅仅是用于设置随机数种子 - 你可以在 ScalaPython 的文档中确认这一点。

据我所知,目前(Spark 2.1)没有一种方法可以为 Spark ML 中的 k-means 提供初始聚类中心(有关 Spark MLlib 的信息请参见这个答案)。而根据文档,initMode参数:

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


谢谢,通常如何设置种子数?是较小的值还是非常大的值? - Jack
@Jack,这并不重要;它不会影响性能,只有在您希望结果完全可重现时才需要显式设置 - 可以查看此SO答案(或仅搜索“随机种子”)https://dev59.com/WJHea4cB1Zd3GeqPqoo8。 - desertnaut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接