可以将经过训练的分类模型存储在Apache Spark中吗?

时间:2015-07-09 21:51:18

标签: apache-spark mahout apache-spark-mllib

我将使用Apache Spark(或Hahoop中的Mahout)在一堆培训文档上训练一个朴素的贝叶斯分类器。我收到新文件进行分类时,我想使用这个模型。我想知道是否有可能在训练时存储模型,然后将其加载到另一个Spark工作中?

2 个答案:

答案 0 :(得分:1)

是的,see the Spark mllib naives bayes documentation

model.save(sc, "myModelPath")
val sameModel = NaiveBayesModel.load(sc, "myModelPath")

答案 1 :(得分:1)

在Mahout的MapReduce支持的NaiveBayes中,如果通过CLI进行培训,模型将保存到-o参数指定的目录中:

mahout trainnb
  -i ${PATH_TO_TFIDF_VECTORS} 
  -o ${"path/to/model}/model 
  -li ${PATH_TO_MODEL}/labelindex 
  -ow 
  -c

请参阅:http://mahout.apache.org/users/classification/bayesian.html

通过以下方式检索:

NaiveBayesModel model = NaiveBayesModel.materialize(("/path/to/model"), getConf());

或者,使用Mahout-Samsara的Spark支持Naive Bayes,可以从命令行训练模型,同样可以输出到-o参数指定的路径:

mahout spark-trainnb
  -i ${PATH_TO_TFIDF_VECTORS} 
  -o ${/path/to/model}
  -ow 
  -c

或者可以通过以下方式在应用程序中训练模型:

val model = SparkNaiveBayes.train(aggregatedObservations, labelIndex, false)

通过以下方式输出到(HD)FS

model.dfsWrite("/path/to/model")

并通过以下方式检索:

val retrievedModel =  NBModel.dfsRead("/path/to/model")

请参阅:http://mahout.apache.org/users/environment/classify-a-doc-from-the-shell.html