Spark中的Kmeans算法,

时间:2020-05-11 04:29:57

标签: scala apache-spark cluster-computing

最近我正在Spark中进行聚类,我在Spark中使用Kmeans聚类进行一些计算

我有一个数据集,就像这样: -1,2,3,4 -2,3,4,5 -1,2,4,5

现在我想对前三列进行聚类,以及如何像前一列那样将前三列的预测作为一列而不丢失

  • 1,2,3,1,4
  • 2,3,4,2,5
  • 1,2,4,3,5

第四列是预测列。

val kmeansData = model.transform(input)

上面的代码仅使用数据框作为参数进行预测

1 个答案:

答案 0 :(得分:0)

您可以在创建kmeans的实例时指定要用于预测的列,如下所示:

val kmeans = new KMeans()
  .setK(3)
  .setFeaturesCol("features")
  .setPredictionCol("prediction")
val model = kmeans.fit(trainingData)
val kmeansData = model.transform(vectoredInput)

由于聚类(并且,我认为,大多数Spark ML算法)适用于Vector类型的列,因此您必须首先将三个独立的列合并为一个向量:

val cols = Array("1", "2", "3")
val assembler = new VectorAssembler().setInputCols(cols).setOutputCol("features")
val vectoredInput = assembler.transform(input)

您可以在此处找到更多详细信息:https://medium.com/rahasak/k-means-clustering-with-apache-spark-cab44aef0a16