如何设置 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 算法是不是都能保证收敛?为啥?