最近我正在Spark中进行聚类,我在Spark中使用Kmeans聚类进行一些计算
我有一个数据集,就像这样: -1,2,3,4 -2,3,4,5 -1,2,4,5
现在我想对前三列进行聚类,以及如何像前一列那样将前三列的预测作为一列而不丢失
第四列是预测列。
val kmeansData = model.transform(input)
上面的代码仅使用数据框作为参数进行预测
答案 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