PMML 模型匯出 - 基於 RDD 的 API

spark.mllib 支援的模型

spark.mllib 支援將模型匯出至預測模型標記語言 (PMML)。

下表列出可匯出至 PMML 的 spark.mllib 模型及其對應的 PMML 模型。

spark.mllib 模型PMML 模型
KMeansModelClusteringModel
LinearRegressionModelRegressionModel (functionName="regression")
RidgeRegressionModelRegressionModel (functionName="regression")
LassoModelRegressionModel (functionName="regression")
SVMModelRegressionModel (functionName="classification" normalizationMethod="none")
Binary LogisticRegressionModelRegressionModel (functionName="classification" normalizationMethod="logit")

範例

若要將支援的 model(見上表)匯出至 PMML,只需呼叫 model.toPMML 即可。

除了將 PMML 模型匯出至字串(如上例中的 model.toPMML)外,您還可以將 PMML 模型匯出至其他格式。

請參閱 KMeans Scala 文件Vectors Scala 文件,以取得 API 的詳細資訊。

以下是建立 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