Kmeans - 分组

时间:2016-04-09 19:57:22

标签: scala apache-spark

我想为numClusters = 6做kmeans标签,以便我可以稍后按标签进行分组。

如何选择要执行kmeans的列?

val clusterThis =  scaledDF.select($"id",$"setting1",$"setting2",$"setting3")

// dataset description lists six operation modes 
val operatingModes = 6 

// Cluster the data into two classes using KMeans
val numClusters = operatingModes
val numIterations = 20

import sqlContext.implicits._
val clusters = KMeans.train(clusterThis.rdd, numClusters, numIterations)
clusters.predict(clusterThis) 

//... join back on id 

1 个答案:

答案 0 :(得分:3)

正如您在KMeans's Example中所看到的,该对象仅使用一列作为features。在那个例子中,巧合的是它具有相同的名称。但是,该名称取决于您,但重要的是该列必须是Vector(密集或稀疏)。

因此,您需要功能(不同列)合并为一个,为此任务,您可以使用VectorAssembler

顺便说一句, K-means 不能与分类功能一起使用。您可以阅读此帖{{3}注意原因。