PMML model export - RDD-based API(PMML模型导出)

 

 

spark.mllib支持的模型

Spark.mllib支持模型导出到Predictive Model Markup Language(预测模型标记语言)

下表列出了可以导出到PMML的spark.mllib模型及其等效的PMML模型。

Spark.mllib模型 PMML模型
KMeansModel ClusteringModel
LinearRegressionModel RegressionModel (functionName="regression")
RidgeRegressionModel RegressionModel (functionName="regression")
LassoModel RegressionModel (functionName="regression")
SVMModel RegressionModel (functionName="classification" normalizationMethod="none")
Binary LogisticRegressionModel RegressionModel (functionName="classification" normalizationMethod="logit")

例子

将支持的模型(见上表)导出到PMML,只需调用model.toPMML。

除了将PMML模型导出为String(model.toPMML,如上例所示),您也可以将PMML模型导出为其他格式。

这里是一个建立KMeansModel并以PMML格式打印出来的完整示例:

Scala
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
 
// 加载并解析数据
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s =>Vectors.dense(s.split(' ').map(_.toDouble))).cache()
 
// 使用KMeans将数据分成两类
val numClusters = 2 
val numIterations = 20 
val clusters =KMeans.train(parsedData, numClusters, numIterations)
 
// 以PMML格式导出一个字符串
println("PMML Model:\n" + clusters.toPMML)
// 将模型导出为PMML格式的本地文件
clusters.toPMML("/tmp/kmeans.xml")
// 以PMML格式将模型导出到分布式文件系统的目录上
clusters.toPMML(sc, "/tmp/kmeans")
// 将模型导出为PMML格式的输出流
clusters.toPMML(System.out)

有关API的详细信息,请参阅KMeans Scala文档Vectors Scala文档

在Spark repo中的“examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala”中查找完整示例代码。

对于不支持的模型,您将找不到.toPMML方法,否则将抛出IllegalArgumentException异常。