如何正确格式化 Spark 数据帧以输入 LDA 拟合?

How do I properly format a Spark dataframe for input to LDA fitting?

我有一个格式如下的数据框:

Index | Feature1 | Feature2 | Feature3
21      5.0        1.0         6.0
5       4.0        2.0         3.0

但是对于 LDA().fit(df) 的输入,我需要一个格式如下的数据框:

id | features
21   [5.0, 1.0, 6.0]
5    [4.0, 2.0, 3.0]

我习惯使用 Pandas,但对使用 PySpark 还是个新手,找不到获得正确格式的好方法。有人可以帮忙吗?

您可以使用 pyspark.ml.feature.VectorAssembler:

df = spark.createDataFrame(
    [[21, 5.0, 1.0, 6.0], [5, 4.0, 2.0, 3.0]], 
    ['Index', 'Feature1', 'Feature2', 'Feature3'])

from pyspark.ml.feature import VectorAssembler

assembler = VectorAssembler().setInputCols(
    ['Feature1', 'Feature2', 'Feature3']
).setOutputCol("features")

assembler.transform(df).show()

+-----+--------+--------+--------+-------------+
|Index|Feature1|Feature2|Feature3|     features|
+-----+--------+--------+--------+-------------+
|   21|     5.0|     1.0|     6.0|[5.0,1.0,6.0]|
|    5|     4.0|     2.0|     3.0|[4.0,2.0,3.0]|
+-----+--------+--------+--------+-------------+