如何设置 Spark Kmeans 初始中心

Posted

技术标签:

【中文标题】如何设置 Spark Kmeans 初始中心【英文标题】:how to set Spark Kmeans initial centers 【发布时间】:2017-09-14 22:22:44 【问题描述】:

我正在使用 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】:

确实,seed 并不代表您的想法,即它不用于“播种”(初始化)集群中心,而只是用于设置随机种子 - 您可以在 @987654321 的文档中确认这一点@ 和 Python API。

据我所知,目前(Spark 2.1)无法为 Spark ML 中的 k-means 提供初始集群中心(请参阅 this answer 了解 Spark MLlib)。 initMode 参数,根据文档:

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

【讨论】:

谢谢,请问一般种子号怎么设置?较小的值还是较大的值? @Jack 没关系;它不会影响性能,仅当您希望结果完全可重现时才需要明确设置它 - 看看这个 SO 答案(或只是谷歌'随机种子')***.com/questions/33973817/…

以上是关于如何设置 Spark Kmeans 初始中心的主要内容,如果未能解决你的问题,请参考以下文章

无论集群中心如何初始化,Kmeans 算法是不是都能保证收敛?为啥?

kmeans初始中心不同结果可能不同 (举例)

Spark KMeans 无法处理大数据吗?

Mahout KMeans 生成的簇数比我的初始 K 设置翻倍

机器学习-KMeans聚类 K值以及初始类簇中心点的选取

使用 Spark MLlib KMeans 从数据中预测集群