scala - 使用 Apache Spark 提取 kmeans 集群信息

标签 scala apache-spark

我已经在以下位置实现了 Apache Spark 示例

https://spark.apache.org/docs/1.1.0/mllib-clustering.html#examples

来源如下:

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)))

// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)

// Evaluate clustering by computing Within Set Sum of Squared Errors
val WSSSE = clusters.computeCost(parsedData)
println("Within Set Sum of Squared Errors = " + WSSSE)

使用数据集:

0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2

我可以使用以下方法提取聚类中心:

  println(clusters.clusterCenters.apply(0))
   println(clusters.clusterCenters.apply(1))

返回

[9.1,9.1,9.1]
[0.10000000000000002,0.10000000000000002,0.10000000000000002]

但是有一些我不确定的项目,API 似乎不支持:

如何提取已添加到两个簇中的每个点?

如何为每个数据点添加标签,以便在查看每个簇中有哪些点的同时也可以确定每个点的标签?我是否需要更新 Spark Kmeans 实现才能实现此目的?

最佳答案

如果您使用的是java,

javaRDD cluster_indices = clusters.predict(parsedData);

因为预测重载。

关于scala - 使用 Apache Spark 提取 kmeans 集群信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28743313/

相关文章:

python - Pyspark 列在查找前几行和计算时生成

scala - 如何在scala中使用通用数字类型进行加法和乘法?

scala - 面对 Play2.x 和新的 newRelic javaagent 的问题

scala - 将 Scala 集与子类型集相交

python - Pyspark 显示每行具有最低值的列

apache-spark - Pycharm 中的 PySpark-无法连接到远程服务器

java - Apache Spark-Kafka.TaskCompletionListenerException & KafkaRDD$KafkaRDDIterator.close 本地集群上的 NPE(客户端模式)

apache-spark - 为什么 PySpark 会失败并出现随机 "Socket is closed"错误?

scala - 如何更改 Akka 和 Logback 日志记录级别

database - 使用 Slick 数据库重置 AutoInc 计数器