0

我使用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初始中心

或者說,我不明白種子在Spark Kmeans中的含義是什麼,我想種子應該是一個向量的數組,它代表運行聚類之前指定的中心。

回答

2

事實上,seed並不意味着你的想法,即它不用於「播種」(初始化)聚類中心,而只是用於設置隨機種子 - 你可以在文檔中證實了這一點爲ScalaPython蜜蜂。據我所知,目前(Spark 2.1)無法爲Spark ML中的k-means提供初始聚類中心(Spark MLlib參見this answer)。 initMode參數,根據文檔:

可以是「隨機」選擇隨機點作爲初始聚類中心,或「k-means ||」使用k-means ++的並行變體)

+0

謝謝,請問通常如何設置種子數?一個較小的值還是一個非常大的值? – Jack

+0

@Jack沒關係;它不影響性能,只有當你希望你的結果完全可重現時,你才需要明確地設置它 - 看看這個SO答案(或者只是谷歌的'隨機種子')http://stackoverflow.com/questions/ 33973817 /什麼,是最種子在-wekas-simplekmeans-人聚類 – desertnaut