【发布时间】:2019-07-24 04:44:05
【问题描述】:
我正在使用 pyspark 进行 SVD。但是在documentation 以及其他任何地方我都没有找到如何使用分段向量重建矩阵。例如,使用pyspark 的svd,我得到了U、s 和V矩阵如下。
from pyspark.mllib.linalg import Vectors
from pyspark.mllib.linalg.distributed import RowMatrix
rows = sc.parallelize([
Vectors.sparse(5, {1: 1.0, 3: 7.0}),
Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0),
Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0)
])
mat = RowMatrix(rows)
# Compute the top 5 singular values and corresponding singular vectors.
svd = mat.computeSVD(5, computeU=True)
U = svd.U # The U factor is a RowMatrix.
s = svd.s # The singular values are stored in a local dense vector.
V = svd.V # The V factor is a local dense matrix.
现在,我想通过将原始矩阵相乘来重建原始矩阵。等式是:
mat_cal = U.diag(s).V.T
在python中,我们可以很容易地做到这一点。但在 pyspark 我没有得到结果。 我找到了this 链接。但它在 scala 中,我不知道如何在 pyspark 中转换它。如果有人可以指导我,那将非常有帮助。
谢谢!
【问题讨论】:
标签: apache-spark pyspark apache-spark-mllib svd