2015-04-28 56 views
2

我試圖使用sklearn庫在Python中的大型稀疏矩陣中分解組件(矩陣分解)中的信號。在Python中使用稀疏矩陣執行分解

我利用scipy的scipy.sparse.csc_matrix來構建我的數據矩陣。但是,我無法執行任何分析,如因子分析或獨立成分分析。我唯一能做的就是使用truncatedSVD或scipy的scipy.sparse.linalg.svds並執行PCA。

有沒有人知道在python的稀疏矩陣上做ICA或FA的任何變通?任何幫助將非常感激!謝謝。

回答

0

即使輸入矩陣是稀疏的,輸出也不會是稀疏矩陣。如果系統不支持稠密矩陣既不結果將不被支持

0

鑑於:

M =UΣV^ T

與SVD的缺點是,矩陣U和V^T是緻密的基質。輸入矩陣稀疏並不重要,U和T將是密集的。另外,SVD的計算複雜度爲O(n^2 * m)或O(m^2 * n),其中n是行數,m是輸入矩陣M中的列數。它取決於哪一個最大。

值得一提的是,SVD將爲您提供最佳解決方案,如果您的住房損失較小(由frobenius norm計算),您可能需要考慮使用CUR algorithm。它將擴展到O(n * m)的較大數據集。

U = CUR^T

當C和R是現在稀疏矩陣。

如果你想看一個python實現,看看pymf。但是,由於看起來確實需要小心,現在有一個open issue的實現。