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

How to load saved KMeans model (in ML Pipeline)?

我正在学习 Scala 并且尝试加载我有 run/fit 数据的模型但没有成功。 运行 花了 6 个小时,如果我找不到 save/load 输出的方法,恐怕我将不得不重新 运行 这个。

我 运行 KMeans 作为管道的一部分。我将 运行 在我的训练数据集上的管道输出保存为 'model',这就是我尝试加载的内容。

在 运行 模型我能够保存(或者至少我认为我是)它使用:

model.write.overwrite().save("/analytics_shared/qoe/km_model")

我的问题是如何将它加载回来,这样我就可以将它用于 cluster/score 新数据,而无需重新运行 需要 6 个小时的训练。

你应该使用 KMeansModel.load 方法。

load(path: String): KMeansModel Reads an ML instance from the input path, a shortcut of read.load(path).

在你的情况下,它将如下所示:

import org.apache.spark.ml.clustering.KMeansModel
val model = KMeansModel.load("/analytics_shared/qoe/km_model")

I ran the KMeans as part of a pipeline. I saved the output of the pipeline that I ran on my training dataset as 'model' and that was what I tried to load.

使用 ML Pipeline 更容易,因为您只需将 KMeansModel 替换为 PipelineModel

import org.apache.spark.ml.PipelineModel
val model = PipelineModel.load("/analytics_shared/qoe/km_model")