如何在DataFrame中合并多个特征向量?

Fel*_*ida 17 machine-learning apache-spark apache-spark-sql apache-spark-ml

使用Spark ML变压器,我到达了 DataFrame每一行位置:

Row(object_id, text_features_vector, color_features, type_features)
Run Code Online (Sandbox Code Playgroud)

其中text_features是一个稀疏的术语权重向量,color_features是一个小的20元素(一个热编码器)密集的颜色矢量,和type_features也是一种热编码器密集的矢量类型.

一个好的方法(使用Spark的设施)将这些特征合并到一个单独的大型数组中,以便测量任何两个对象之间的余弦距离

zer*_*323 24

您可以使用VectorAssembler:

import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.DataFrame

val df: DataFrame = ???

val assembler = new VectorAssembler()
  .setInputCols(Array("text_features", "color_features", "type_features"))
  .setOutputCol("features")

val transformed = assembler.transform(df)
Run Code Online (Sandbox Code Playgroud)

对于PySpark示例,请参阅:在PySpark中编码和组合多个功能