我試圖使用sklearn
庫在Python中的大型稀疏矩陣中分解組件(矩陣分解)中的信號。在Python中使用稀疏矩陣執行分解
我利用scipy的scipy.sparse.csc_matrix
來構建我的數據矩陣。但是,我無法執行任何分析,如因子分析或獨立成分分析。我唯一能做的就是使用truncatedSVD
或scipy的scipy.sparse.linalg.svds
並執行PCA。
有沒有人知道在python的稀疏矩陣上做ICA或FA的任何變通?任何幫助將非常感激!謝謝。
我試圖使用sklearn
庫在Python中的大型稀疏矩陣中分解組件(矩陣分解)中的信號。在Python中使用稀疏矩陣執行分解
我利用scipy的scipy.sparse.csc_matrix
來構建我的數據矩陣。但是,我無法執行任何分析,如因子分析或獨立成分分析。我唯一能做的就是使用truncatedSVD
或scipy的scipy.sparse.linalg.svds
並執行PCA。
有沒有人知道在python的稀疏矩陣上做ICA或FA的任何變通?任何幫助將非常感激!謝謝。
即使輸入矩陣是稀疏的,輸出也不會是稀疏矩陣。如果系統不支持稠密矩陣既不結果將不被支持
它通常是best practice使用coo_matrix
建立矩陣,然後使用.tocsc()
操縱它轉換。
鑑於:
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的實現。