當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pyspark IndexedRowMatrix.computeSVD用法及代碼示例


本文簡要介紹 pyspark.mllib.linalg.distributed.IndexedRowMatrix.computeSVD 的用法。

用法:

computeSVD(k, computeU=False, rCond=1e-09)

計算 IndexedRowMatrix 的奇異值分解。

給定的維數 (m X n) 的行矩陣 A 被分解為 U * s * V'T 其中

  • U:(m X k)(左奇異向量)是IndexedRowMatrix

    其列是 (A X A') 的特征向量

  • s: DenseVector 由特征值的平方根組成

    (奇異值)按降序排列。

  • v: (n X k)(右奇異向量)是一個矩陣,其列

    是 (A’ X A) 的特征向量

有關實現的更多具體細節,請參閱 scala 文檔。

2.2.0 版中的新函數。

參數

kint

要保留的前導奇異值的數量(0 < k <= n)。如果在達到最大 Arnoldi 更新迭代次數之前存在數字零奇異值或沒有足夠的 Ritz 值收斂(如果矩陣 A 為 ill-conditioned),則它可能返回小於 k。

computeU布爾型,可選

是否計算 U。如果設置為 True,則 U 由 A * V * s^-1 計算

rCond浮點數,可選

倒數條件數。所有小於 rCond * s[0] 的奇異值都被視為零,其中 s[0] 是最大的奇異值。

返回

SingularValueDecomposition

例子

>>> rows = [(0, (3, 1, 1)), (1, (-1, 3, 1))]
>>> irm = IndexedRowMatrix(sc.parallelize(rows))
>>> svd_model = irm.computeSVD(2, True)
>>> svd_model.U.rows.collect() 
[IndexedRow(0, [-0.707106781187,0.707106781187]),        IndexedRow(1, [-0.707106781187,-0.707106781187])]
>>> svd_model.s
DenseVector([3.4641, 3.1623])
>>> svd_model.V
DenseMatrix(3, 2, [-0.4082, -0.8165, -0.4082, 0.8944, -0.4472, 0.0], 0)

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.mllib.linalg.distributed.IndexedRowMatrix.computeSVD。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。