如何设置 Spark Kmeans 初始中心

how to set Spark Kmeans initial centers

我正在为 运行 Kmeans 使用 Spark ML。我有一堆数据和三个现有的中心,例如三个中心是:[1.0,1.0,1.0],[5.0,5.0,5.0],[9.0,9.0,9.0]. 那么如何表示 Kmeans 中心是以上三个向量。 我看到 Kmean 对象有 seed 参数,但 seed 参数是一个 long 类型而不是数组。那么我怎样才能告诉 Spark Kmeans 只使用现有的中心进行聚类。

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

事实上,seed并不代表你所想的,即它不用于'seeding'(初始化)聚类中心,而只是用于设置随机种子 - 你可以在Scala and Python API 的文档。

据我所知,目前 (Spark 2.1) 无法在 Spark ML 中为 k-means 提供初始聚类中心(根据文档,请参阅 for Spark MLlib). The initMode 参数:

can be either "random" to choose random points as initial cluster centers, or "k-means||" to use a parallel variant of k-means++')