K表示使用apache spark聚类ml库

时间:2017-01-04 12:39:51

标签: apache-spark k-means

我正在尝试使用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)

1 个答案:

答案 0 :(得分:1)

您需要设置功能列,用于在实例化Kmeans时进行预测,如下例所示:

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

在kmeans上调用.fit()后,它会返回Transformer。在你的例子的情况下,变量"模型"是一个变压器。您可以调用.transform()来获取给定数据的预期预测。例如,下面的行将为您提供带有预测列的数据框。

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

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