【问题标题】:Initializing a StreamingKmeans model with static training data使用静态训练数据初始化 StreamingKmeans 模型
【发布时间】:2016-11-28 05:06:56
【问题描述】:
我可以使用训练数据集构建 Spark Kmeans 模型。我想让我的模型适应新数据,所以 Spark StreamingKmeans 对我来说似乎很棒。
但是,Spark 的 StreamingKmeans 似乎只能针对流式数据进行训练。无法使用默认的 kmeans 模型对其进行初始化,在一些静态训练数据上进行训练,然后随着时间的推移在新的流入数据上训练模型。
是否有一种方法可以使用静态训练数据在 Spark 中初始化 KMeans 模型,并使用 StreamingKmeans 在新数据上训练它?
【问题讨论】:
标签:
apache-spark
spark-streaming
k-means
apache-spark-mllib
【解决方案1】:
根据文档,StreamingKMeans 有一个setInitialCenters(centers: Array[Vector], weights: Array[Double]) 方法。而经过静态训练的KMeansModel 有一个clusterCenters(): Array[Vector] 方法。因此,您可以使用预训练 KMeansModel 的 clusterCenters() 初始化 StreamingKMeans。
【解决方案2】:
如果您仍然可以访问该静态训练数据,则可以将其发送到 DStream 中的 StreamingKMeans;否则,我认为没有其他方法可以初始化 StreamingKMeans 对象。