我想为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
答案 0 :(得分:3)
正如您在KMeans's Example中所看到的,该对象仅使用一列作为features
。在那个例子中,巧合的是它具有相同的名称。但是,该名称取决于您,但重要的是该列必须是Vector
(密集或稀疏)。
因此,您需要将功能(不同列)合并为一个,为此任务,您可以使用VectorAssembler。
顺便说一句, K-means 不能与分类功能一起使用。您可以阅读此帖{{3}注意原因。