2014-10-26 54 views
0

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

谢谢。

+2

您使用的是MlLib吗?也许你可以保存训练好的模型的权重并保存。然后在需要时创建一个新模型,将这些权重作为初始权重? – 2014-11-12 19:07:10

+0

是的,我正在使用MLib。是否有可能从训练模型中获得权重? – dimson 2014-11-12 19:21:47

+2

是的。我使用LogisticRegressionModel。然后model.weights()给出权重向量。打算像这样使用它。找不到序列化整个模型的其他选项。 – 2014-11-12 19:27:08

回答

5

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

店为:

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

+0

坦克曼!很好的答案! – dimson 2014-11-25 11:26:15