У меня есть кадр данных Spark:
df.show()
+--------+--------+------------+
| i | j | value
+--------+--------+------------+
| 0.0| 0.0| -516.0|
| 0.0| 2.0| 0.771516749|
У df есть 1M строк. Матрица очень разреженная, так как у меня ~ 100K i и ~ 100K j . Так в среднем 10 значений по i.
При вычислении SVD произошла ошибка:
cmat = CoordinateMatrix(df.rdd)
svd = cmat.computeSVD(100)
Out >>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-17-a82b41a6869f> in <module>()
----> 1 svd = cmat.computeSVD(100)
AttributeError: 'CoordinateMatrix' object has no attribute 'computeSVD'
Итак, я попытался преобразовать в RowMatrix:
rowmat = cmat.toRowMatrix()
Но на кластере потребовалось 200Go, что не очень хорошо.
Как вычислить собственные значения большой разреженной матрицы в Spark (Python)?