Как объединить несколько векторов признаков в DataFrame?

Используя преобразователи Spark ML, я пришел к DataFrame, где каждая строка выглядит так:

Row(object_id, text_features_vector, color_features, type_features)

где text_features — разреженный вектор весов терминов, color_features — небольшой плотный вектор цветов из 20 элементов (с одним горячим кодировщиком), а type_features — также плотный вектор типов с одним горячим кодировщиком.

Каким был бы хороший подход (используя средства Spark) для объединения этих функций в один большой массив, чтобы я мог измерять такие вещи, как косинусное расстояние между любыми двумя объектами?


person Felipe    schedule 22.10.2015    source источник


Ответы (1)


Вы можете использовать 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 см. в разделе Кодирование и сборка нескольких функций в PySpark.

person zero323    schedule 22.10.2015