K表示使用apache spark集群ml库

K means clustering ml library using apache spark

我正在尝试使用 2.0.2 中的 apache spark ml 版本实现 k 均值集群。找到聚类中心后,面临如何识别数据属于哪个聚类点的问题。请帮助我.. 在此先感谢。请找到我的代码:

val tokenFrameprocess = TokenizerProcessor.process("value", "tokenized")

val stopwordRemover = StopWordsProcessor.process("tokenized", "stopwords")

val stemmingProcess = StemmingProcessor.process("value", "stemmed")

val HashingProcess = HashingTFProcessor.process("stopwords" ,"features")




 val pipeline = new Pipeline().setStages(Array(tokenFrameprocess,stopwordRemover,stemmingProcess,HashingProcess))


val finalFrameProcess = pipeline.fit(df)

val finalFramedata = finalFrameProcess.transform(df);




val kmeans = new KMeans().setK(4).setSeed(1L)

val model = kmeans.fit(finalFramedata)




val WSSSE = model.computeCost(finalFramedata)

   // Shows the result.
println("Cluster Centers: ")

model.clusterCenters.foreach(println)

您必须设置用于在实例化 Kmeans 时进行预测的特征列,如下例所示:

val kmeans = new KMeans().setK(4).setSeed(1L).setFeaturesCol("features").setPredictionCol("prediction")

一旦你在 kmeans 上调用 .fit(),它 returns 一个 Transformer。在您的示例中,变量 "model" 是一个转换器。您可以调用 .transform() 以获得对给定数据的所需预测。例如,下面的行将为您提供带有预测列的数据框。

val model = kmeans.fit(finalFramedata)
val transformedDF = model.transform(finalFramedata)
transformedDF.show(false)

预测列表示聚类点。如果您将 k 值设为 3,则预测列将具有类似 0、1、2 的值。