PMML模型导出 - 基于RDD的API

spark.mllib 支持的模型

spark.mllib 支持将模型导出为预测模型标记语言 ( PMML )。

下表列出了可以导出到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")

示例

要将支持的 model (请参见上表)导出为 PMML,只需调用 model.toPMML

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

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

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

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(s"PMML模型:\n ${clusters.toPMML}")
// 将模型导出到本地文件,以PMML格式保存
clusters.toPMML("/tmp/kmeans.xml")
// 将模型导出到分布式文件系统中的目录,以PMML格式保存
clusters.toPMML(sc, "/tmp/kmeans")
// 将模型导出到PMML格式的输出流
clusters.toPMML(System.out)
Find full example code at "examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala" in the Spark repo.

对于不支持的模型,您要么找不到 .toPMML 方法,要么将抛出 IllegalArgumentException