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)
对于不支持的模型,您要么找不到
.toPMML
方法,要么将抛出
IllegalArgumentException
。