/ / Як створити LablePoint з DataFrame безпосередньо без жорсткого кодування кожного колонкового індексу кадру? - scala, apache-spark, spark-dataframe, apache-spark-mllib

Як створити LablePoint з DataFrame безпосередньо без жорсткого кодування індексу кожного стовпця кадру даних? - scala, apache-іскр, spark-dataframe, apache-spark-mllib

У мене є dataframe (inputDF) з 100 стовпців з десятковим типом даних. Я хочу створити LabelPoint, використовуючи dataframe (inputDF).

Я можу створити LablePoint шляхом жорсткого кодування кожного колонкового індексу кадру даних, що не є оптимальним рішенням.

val outputLabelPoint = inputDF.map(x => new LabeledPoint(0.0, Vectors.dense(x.getAs[Double](0),x.getAs[Double](1),x.getAs[Double](2),x.getAs[Double](3), ...))

Як створити LablePoint з DataFrame безпосередньо без жорсткого кодування кожного колонкового індексу кадру даних?

Допомога буде дуже вдячна.

Відповіді:

0 для відповіді № 1

VectorAssembler може бути трансформатором, який ви хочете знайти.

VectorAssembler - це трансформатор, який об'єднує заданий список стовпців в один векторний стовпець.

id | годину | мобільний | userFeatures | натиснув
---- | ------ | -------- | ------------------ | ---------
0 | 18 | 1,0 | [0.0, 10.0, 0.5] | 1,0

ПІСЛЯ

id | годину | мобільний | userFeatures | натиснув | функції
---- | ------ | -------- | ------------------ | -----------------------------
0 | 18 | 1,0 | [0.0, 10.0, 0.5] | 1,0 | [18.0, 1.0, 0.0, 10.0, 0.5]

Я збентежений, чому дві таблиці не можуть відображатися правильно.

Див. Приклад у Spark Doc для більш детальної інформації.

Якщо вам потрібна додаткова допомога, будь ласка, опишіть імена ваших стовпців і як вони генеруються.