如何加载保存的KMeans模型(在ML管道中)?

jsw*_*ler 1 scala k-means apache-spark apache-spark-mllib

我正在学习scala,并尝试加载我已经在数据上运行/拟合的模型而没有成功。运行花了6个小时,如果我想不出一种保存/加载输出的方法,恐怕我将不得不重新运行它。

我将KMeans作为管道的一部分运行。我将在训练数据集上运行的管道的输出保存为“模型”,这就是我尝试加载的结果。

运行模型后,我可以使用以下命令保存(或至少我以为是):

model.write.overwrite().save("/analytics_shared/qoe/km_model")
Run Code Online (Sandbox Code Playgroud)

我的问题是如何重新加载它,这样我就可以使用它来对新数据进行聚类/评分,而不必重新运行耗时6个小时的培训。

Jac*_*ski 5

您应该使用KMeansModel.load方法。

load(path:String):KMeansModel从输入路径读取ML实例,其快捷方式为read.load(path)

您的情况如下:

import org.apache.spark.ml.clustering.KMeansModel
val model = KMeansModel.load("/analytics_shared/qoe/km_model")
Run Code Online (Sandbox Code Playgroud)

我将KMeans作为管道的一部分运行。我将在训练数据集上运行的管道的输出保存为“模型”,这就是我尝试加载的结果。

随着ML管道,它甚至为你只需更换更容易KMeansModelPipelineModel

import org.apache.spark.ml.PipelineModel
val model = PipelineModel.load("/analytics_shared/qoe/km_model")
Run Code Online (Sandbox Code Playgroud)