13

с использованием искровых ML трансформаторов я прибыл в DataFrame, где каждая строка выглядит следующим образом:Как объединить несколько векторных объектов в DataFrame?

Row(object_id, text_features_vector, color_features, type_features) 

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

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

ответ

19

Вы можете использовать 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

Смежные вопросы