我正在寻求帮助以了解有关使用Spark MLIB中的K-Means聚类算法生成的聚类的更多信息。
在下面的代码片段结束时,我们在值集群中有一个K-Means模型。
val data = List((0.0, 0.0, 0.0),(0.1, 0.1, 0.1),(0.2, 0.2, 0.2),(9.0, 9.0, 9.0))
val dataRDD = sc.parallelize(data)
val parsedData = dataRDD.map(s => Vectors.dense(Array(s._1, s._2, s._3)))
// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)
// clusters.clusterCenters - used to access cluster centers
我可以使用clusters.clusterCenters使用预测和集群中心预测测试数据点的集群ID。但我能知道每个集群下的数据点吗?
例如:我想要这些信息。
Cluster1 has the following data points:
(0.0, 0.0, 0.0)
(0.2, 0.2, 0.2)
Cluster 2 has the following data points:
(0.1, 0.1, 0.1)
(9.0, 9.0, 9.0)
执行此操作的一种方法是使用Predict方法查找每个训练数据点的群集ID。但有没有更好的方法来实现这一点,因为群集中已经有数据点?
非常感谢您的帮助。谢谢。