如何正确格式化 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]|
+-----+--------+--------+--------+-------------+
我有一个格式如下的数据框:
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]|
+-----+--------+--------+--------+-------------+