【问题标题】:save trained model of Spark's Naive Bayes classificator保存 Spark 的朴素贝叶斯分类的训练模型
【发布时间】:2014-12-21 23:22:55
【问题描述】:

有人知道 - 是否可以保存经过训练的 Spark 朴素贝叶斯分类器模型(例如在文本文件中),并在将来需要时加载它?

谢谢。

【问题讨论】:

  • 你在使用 MlLib 吗?也许您可以保存训练模型的权重并保存它们。然后在需要时创建一个新模型,将这些权重作为初始权重?
  • 是的,我正在使用 MLib。是否可以从训练模型中获取权重?
  • 是的。我使用 LogisticRegressionModel。然后 model.weights() 给出权重向量。正打算这样使用它。除了序列化整个模型之外,找不到任何其他选项。
  • 谢谢你!我会听从你的建议。

标签: java-8 apache-spark


【解决方案1】:

我尝试保存和加载模型。我无法使用存储的权重重新创建模型。 (找不到合适的构造函数)。但是整个模型是可序列化的。所以你可以按如下方式存储和加载它:

存储为:

val fos = new FileOutputStream(<storage path>)   
val oos = new ObjectOutputStream(fos)
oos.writeObject(model)     
oos.close

并加载它:

val fos = new FileInputStream(<storage path>)
val oos = new ObjectInputStream(fos)
val newModel = oos.readObject().asInstanceOf[org.apache.spark.mllib.classification.LogisticRegressionModel]

它对我有用

在这个线程中讨论: http://apache-spark-user-list.1001560.n3.nabble.com/How-to-save-mllib-model-to-hdfs-and-reload-it-td11953.html

【讨论】:

  • 感谢人!很好的答案!
【解决方案2】:

您可以使用内置函数(Spark 版本 2.1.0)。使用NaiveBayesModel#save 存储模型,使用NaiveBayesModel#load 读取先前存储的模型。

方法save 来自Saveable,并由广泛的分类模型实现。方法load 似乎在每个分类模型实现中都是静态的。

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2020-06-28
    • 2012-04-18
    • 2020-09-13
    • 2017-06-21
    • 2019-04-07
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多