我使用Spark ML来运行Kmeans。我有大量数据和三个现有中心,例如三个中心是:[1.0,1.0,1.0],[5.0,5.0,5.0],[9.0,9.0,9.0].
那么我怎么能指出Kmeans中心是上面三个向量。
我看到Kmean对象有种子参数,但种子参数是long类型而不是数组。那么我怎么能告诉Spark Kmeans只使用现有的集群中心。
或者说,我不明白种子在Spark Kmeans中意味着什么,我想种子应该是一个向量数组,它代表了运行聚类之前的指定中心。
答案 0 :(得分:2)
实际上,seed
并不意味着您的想法,即它不用于“播种”(初始化)群集中心,而只是用于设置随机种子 - 您可以在文档中确认Scala和Python API。
据我所知,目前(Spark 2.1)无法为Spark ML中的k-means提供初始集群中心(请参阅this answer以获取Spark MLlib)。 initMode
参数,根据文档:
可以“随机”选择随机点作为初始聚类中心,或“k-means ||”使用k-means ++')的并行变体