使用Spark ML变换器我到达DataFrame
,每行看起来像这样:
Row(object_id, text_features_vector, color_features, type_features)
其中text_features
是术语权重的稀疏向量,color_features
是一个小的20元素(单热编码器)密集颜色向量,type_features
也是一个-hot-encoder密集型矢量。
一个好的方法(使用Spark的设施)将这些功能合并到一个单独的大型数组中,以便我测量任何两个对象之间的余弦距离之类的东西?
答案 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