This repository was archived by the owner on May 9, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +38
-8
lines changed
mllib/src/main/scala/org/apache/spark/mllib/export Expand file tree Collapse file tree 5 files changed +38
-8
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,9 @@ import java.io.OutputStream
21
21
22
22
trait ModelExport {
23
23
24
+ /**
25
+ * Write the exported model to the output stream specified
26
+ */
24
27
def save (outputStream : OutputStream ): Unit
25
28
26
29
}
Original file line number Diff line number Diff line change @@ -19,14 +19,22 @@ package org.apache.spark.mllib.export
19
19
20
20
import org .apache .spark .mllib .clustering .KMeansModel
21
21
import org .apache .spark .mllib .export .pmml .KMeansPMMLModelExport
22
+ import org .apache .spark .mllib .export .ModelExportType ._
22
23
23
24
object ModelExportFactory {
24
25
25
- // TODO: introduce model export typed
26
-
27
- def createModelExport (model : Any ): ModelExport = model match {
28
- case kmeans : KMeansModel => new KMeansPMMLModelExport
29
- case _ => throw new IllegalArgumentException (" Export not supported for model " + model.getClass)
26
+ /**
27
+ * Factory object to help creating the necessary ModelExport implementation
28
+ * taking as input the ModelExportType (for example PMML) and the machine learning model (for example KMeansModel).
29
+ */
30
+ def createModelExport (model : Any , exportType : ModelExportType ): ModelExport = {
31
+ return exportType match {
32
+ case PMML => model match {
33
+ case kmeans : KMeansModel => new KMeansPMMLModelExport (kmeans)
34
+ case _ => throw new IllegalArgumentException (" Export not supported for model: " + model.getClass)
35
+ }
36
+ case _ => throw new IllegalArgumentException (" Export type not supported:" + exportType)
37
+ }
30
38
}
31
39
32
40
}
Original file line number Diff line number Diff line change 17
17
18
18
package org .apache .spark .mllib .export
19
19
20
+ /**
21
+ * Defines export types.
22
+ * - PMML exports the machine learning models in an XML-based file format called Predictive Model Markup Language developed by the Data Mining Group (www.dmg.org).
23
+ */
20
24
object ModelExportType extends Enumeration {
21
25
22
26
type ModelExportType = Value
Original file line number Diff line number Diff line change 17
17
18
18
package org .apache .spark .mllib .export .pmml
19
19
20
- class KMeansPMMLModelExport extends PMMLModelExport {
20
+ import org . apache . spark . mllib . clustering . KMeansModel
21
21
22
- populateKMeansPMML();
22
+ /**
23
+ * PMML Model Export for KMeansModel class
24
+ */
25
+ class KMeansPMMLModelExport (model : KMeansModel ) extends PMMLModelExport {
26
+
27
+ /**
28
+ * Export the input KMeansModel model to PMML format
29
+ */
30
+ populateKMeansPMML(model);
23
31
24
- def populateKMeansPMML (): Unit = {
32
+ private def populateKMeansPMML (model : KMeansModel ): Unit = {
25
33
// TODO: set here header description
26
34
pmml.setVersion(" testing... kmeans..." );
27
35
// TODO: generate the model...
Original file line number Diff line number Diff line change @@ -26,10 +26,17 @@ import scala.beans.BeanProperty
26
26
27
27
trait PMMLModelExport extends ModelExport {
28
28
29
+ /**
30
+ * Holder of the exported model in PMML format
31
+ */
29
32
@ BeanProperty
30
33
var pmml : PMML = new PMML ();
31
34
// TODO: set here header app copyright and timestamp
32
35
36
+ /**
37
+ * Write the exported model (in PMML XML) to the output stream specified
38
+ */
39
+ @ Override
33
40
def save (outputStream : OutputStream ): Unit = {
34
41
JAXBUtil .marshalPMML(pmml, new StreamResult (outputStream));
35
42
}
You can’t perform that action at this time.
0 commit comments