如何将汇编向量转换为数据帧?

时间:2019-04-01 15:45:30

标签: scala apache-spark

我刚刚使用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)
  }

结果我得到了2个向量数据框:

+--------------------+----------+
|            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()

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

实际上,您不需要删除原始列即可执行集群。

<div class="a-checkbox a-checkbox-fancy s-navigation-checkbox">
    <label>
        <input type="checkbox" name="" value="" checked="">
        <i class="a-icon a-icon-checkbox"></i>
        <span class="a-label a-checkbox-label">
            <span class="a-size-base a-color-base a-text-bold">Dell</span>
        </span>
    </label>
</div>

从那里,您可以计算所需的内容。