Я просто использовал VectorAssembler
, чтобы нормализовать свои функции для приложения ML.
def kmeansClustering ( k : Int ) : sql.DataFrame = {
val assembler = new VectorAssembler()
.setInputCols(this.listeOfName())
.setOutputCol("features")
val intermediaireDF = assembler
.transform(this.filterNumeric())
.select("features")
val kmeans = new KMeans().setK(k).setSeed(1L)
val model = kmeans.fit(intermediaireDF)
val predictions = model.transform(intermediaireDF)
return(predictions)
}
, в результате я получил фрейм данных с двумя векторами:
+--------------------+----------+
| features|prediction|
+--------------------+----------+
|[-27.482279,153.0...| 0|
|[-27.47059,153.03...| 2|
|[-27.474531,153.0...| 3|
.................................
Итак, я хочувыполнить что-то вроде avg и std по группам для каждого столбца, но функции собраны, и я не могу манипулировать ими.
Я пытался использовать org.apache.spark.ml.feature.VectorDisassembler
, но это не сработало.
val disassembler = new VectorDisassembler().setInputCol("vectorCol")
disassembler.transform(df).show()
Есть предложения?