【问题标题】:How to load saved KMeans model (in ML Pipeline)?如何加载保存的 KMeans 模型(在 ML Pipeline 中)?
【发布时间】:2017-12-27 22:12:30
【问题描述】:

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

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

运行模型后,我可以使用以下方法保存(或者至少我认为是):

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

我的问题是如何将其加载回来,这样我就可以使用它对新数据进行聚类/评分,而无需重新运行需要 6 小时的训练。

【问题讨论】:

    标签: scala apache-spark k-means apache-spark-mllib


    【解决方案1】:

    你应该使用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")
    

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

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

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

    【讨论】:

    • 成功了!我一直在加载 ml.Pipeline 而不是 ml.PipelineModel 所以它一直作为错误返回。你摇滚!非常感谢!
    • 很好的答案!他们应该将您的回复添加到他们的文档中!我浪费了很多时间在 Spark 文档上搜索这个......
    猜你喜欢
    • 2015-11-24
    • 2015-10-27
    • 2018-02-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多