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") |
示例
要将支持的 模型
(参见上表)导出到 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
// Load and parse the data
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)
// Export to PMML to a String in PMML format
println(s"PMML Model:\n ${clusters.toPMML}")
// Export the model to a local file in PMML format
clusters.toPMML("/tmp/kmeans.xml")
// Export the model to a directory on a distributed file system in PMML format
clusters.toPMML(sc, "/tmp/kmeans")
// Export the model to the OutputStream in PMML format
clusters.toPMML(System.out)
在 Spark 存储库中的“examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala”中查找完整的示例代码。
对于不支持的模型,您将找不到 .toPMML
方法,或者会抛出 IllegalArgumentException
。