0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 package org.apache.spark.examples.mllib;
0019
0020 import org.apache.spark.SparkConf;
0021 import org.apache.spark.api.java.JavaSparkContext;
0022
0023
0024 import org.apache.spark.api.java.JavaRDD;
0025 import org.apache.spark.mllib.clustering.GaussianMixture;
0026 import org.apache.spark.mllib.clustering.GaussianMixtureModel;
0027 import org.apache.spark.mllib.linalg.Vector;
0028 import org.apache.spark.mllib.linalg.Vectors;
0029
0030
0031 public class JavaGaussianMixtureExample {
0032 public static void main(String[] args) {
0033
0034 SparkConf conf = new SparkConf().setAppName("JavaGaussianMixtureExample");
0035 JavaSparkContext jsc = new JavaSparkContext(conf);
0036
0037
0038
0039 String path = "data/mllib/gmm_data.txt";
0040 JavaRDD<String> data = jsc.textFile(path);
0041 JavaRDD<Vector> parsedData = data.map(s -> {
0042 String[] sarray = s.trim().split(" ");
0043 double[] values = new double[sarray.length];
0044 for (int i = 0; i < sarray.length; i++) {
0045 values[i] = Double.parseDouble(sarray[i]);
0046 }
0047 return Vectors.dense(values);
0048 });
0049 parsedData.cache();
0050
0051
0052 GaussianMixtureModel gmm = new GaussianMixture().setK(2).run(parsedData.rdd());
0053
0054
0055 gmm.save(jsc.sc(), "target/org/apache/spark/JavaGaussianMixtureExample/GaussianMixtureModel");
0056 GaussianMixtureModel sameModel = GaussianMixtureModel.load(jsc.sc(),
0057 "target/org.apache.spark.JavaGaussianMixtureExample/GaussianMixtureModel");
0058
0059
0060 for (int j = 0; j < gmm.k(); j++) {
0061 System.out.printf("weight=%f\nmu=%s\nsigma=\n%s\n",
0062 gmm.weights()[j], gmm.gaussians()[j].mu(), gmm.gaussians()[j].sigma());
0063 }
0064
0065
0066 jsc.stop();
0067 }
0068 }