1. 程式人生 > >scipy中稀疏矩陣coo_matrix, csr_matrix 的使用

scipy中稀疏矩陣coo_matrix, csr_matrix 的使用

當對離散資料進行擬合預測時,往往要對特徵進行onehot處理,但onehot是高度稀疏的向量,如果使用List或其他常規的儲存方式,對記憶體佔用極大。
這時稀疏矩陣型別 coo_matrix / csr_matrix 就派上用場了!

這兩種稀疏矩陣型別csr_matrix儲存密度更大,但不易手工構建。coo_matrix儲存密度相對小,但易於手工構建,常用方法為先手工構建coo_matrix,如果對記憶體要求高則使用 tocsr() 方法把coo_matrix轉換為csr_matrix型別。

csr_matrix記憶體使用約為coo_matrix的70% :
這裡寫圖片描述
圖片引用自網路

coo_matrix是比較通用的格式,比如sklearn中LR可直接處理coo_matrix 格式。

那麼接下來就是構建coo_matrix矩陣。
這裡寫圖片描述

應該很好理解吧?
就是分別定義有那些非零元素,以及各個非零元素對應的row和col,最後定義稀疏矩陣的shape。

coo_matrix 一經定義後shape就不可更改了! 但data, row, col 可更改。
但我查文件顯示coo_matrix有reshape() 函式
這裡寫圖片描述

使用reshape函式拋 NotImplementedError 異常。
查 v1.0.0版本原始碼:
這裡寫圖片描述
原來reshape函式功能還未實現。。

合併兩個 coo_matrix或 csr_matrix 可以使用 vstack() 或 hstack()。
具體自行查文件吧。