2014-10-26 95 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