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

时间:2015-10-22 05:01:39

标签: apache-spark machine-learning apache-spark-sql apache-spark-ml

使用Spark ML变换器我到达DataFrame,每行看起来像这样:

Row(object_id, text_features_vector, color_features, type_features)

其中text_features是术语权重的稀疏向量,color_features是一个小的20元素(单热编码器)密集颜色向量,type_features也是一个-hot-encoder密集型矢量。

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

1 个答案:

答案 0 :(得分: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)

对于PySpark示例,请参阅:Encode and assemble multiple features in PySpark