在Pyspark数据帧上运行PolynomialExpansion后,我有一个如下所示的数据框(polyDF):
+--------------------+--------------------+
| features| polyFeatures|
+--------------------+--------------------+
|(81,[2,9,26],[13....|(3402,[5,8,54,57,...|
|(81,[4,16,20,27,3...|(3402,[14,19,152,...|
|(81,[4,27],[1.0,1...|(3402,[14,19,405,...|
|(81,[4,27],[1.0,1...|(3402,[14,19,405,...|
“功能”列包含原始数据中包含的功能。每行代表不同的用户。原始数据中的每个用户总共有81个可能的功能。 “polyFeatures”列包括运行多项式展开后的特征。运行PolynomialExpansion后,有3402个可能的polyFeature。那么两列的每一行包含的是:
我的问题是,如何创建这两个列,创建两个稀疏矩阵,然后将它们连接在一起以获得一个完整的稀疏Pyspark矩阵?理想情况下它看起来像这样:
+---+----+----+----+------+----+----+----+----+---+---
| 1 | 2 | 3 | 4 | ... |405 |406 |407 |408 |409|...
+---+----+----+----+------+----+----+----+----+---+---
| 0 | 13 | 0 | 0 | ... | 0 | 0 | 0 | 6 | 0 |...
| 0 | 0 | 0 | 9 | ... | 0 | 0 | 0 | 0 | 0 |...
| 0 | 0 | 0 | 1.0| ... | 3 | 0 | 0 | 0 | 0 |...
| 0 | 0 | 0 | 1.0| ... | 3 | 0 | 0 | 0 | 0 |...
我已经查看了位于here的PolynomialExpansion的Spark文档,但它没有涵盖此特定问题。我还尝试应用记录为here的SparseVector类,但这似乎只对一个向量而不是向量的数据帧有用。
有没有有效的方法来实现这一目标?