19

使用 Spark ML 转换器,我到达了DataFrame每行如下所示的位置:

Row(object_id, text_features_vector, color_features, type_features)

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

将这些特征合并到一个大数组中的好方法是什么(使用 Spark 的工具),以便我测量任何两个对象之间的余弦距离之类的东西?

4

1 回答 1

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

于 2015-10-22T05:30:44.970 回答