2016-07-24 25 views
0

我可以使用訓練數據集構建Spark Kmeans模型。我想讓我的模型適應新的數據,所以Spark StreamingKmeans對我來說似乎很棒。使用靜態訓練數據初始化StreamingKmeans模型

但是,似乎Spark的StreamingKmeans只能在數據流中訓練。沒有辦法用默認的kmeans模型對其進行初始化,並根據一些靜態訓練數據進行訓練,然後隨着時間的推移對新的流入數據進行訓練。

是否存在使用靜態訓練數據在Spark中初始化KMeans模型的方法,並且使用StreamingKmeans對新數據進行隨時間訓練?

回答

1

根據文檔,StreamingKMeans有一個setInitialCenters(centers: Array[Vector], weights: Array[Double])方法。靜態訓練的KMeansModel有一個clusterCenters(): Array[Vector]方法。因此,您可以使用預先訓練的KMeansModel的clusterCenters()初始化StreamingKMeans。

0

如果您仍然可以訪問該靜態訓練數據,則可以將它發送到DStream中的StreamingKMeans;否則,我不認爲有另一種方法來初始化StreamingKMeans對象。