K-Means聚类后Spark节省质心

时间:2017-08-22 20:24:04

标签: scala apache-spark spark-dataframe cluster-analysis

以下代码是从我的Spark K-Means聚类代码中删除的。 我集群在一组固定的属性上,但有时候我只聚集在2个维度上。有时候我很难将结果写回数据库 - mysql。以下代码仅适用于2d。我怎样才能对此进行参数化?

val kmeans = new KMeans().setK(k).setSeed(1L)
val model = kmeans.fit(dataset)

// Evaluate clustering by computing Within Set Sum of Squared Errors.
//val WSSSE = model.computeCost(dataset)
//println(s"Within Set Sum of Squared Errors = $WSSSE")

var clusterCenters:Seq[(Double,Double)] = Seq()
for(e <- model.clusterCenters){
  clusterCenters = clusterCenters :+ ((e(0)),e(1))
}

import sc.implicits._
var centroidsDF = clusterCenters.toDF()

1 个答案:

答案 0 :(得分:0)

好的,解决方案是创建一个DataFrame,其中包含一个您无法直接保存的列,然后定义一个UDF。然后,您可以在循环中使用.withColumn()来转换DataFrame。然后删除原始列并保存DataFrame。