scipy中稀疏矩陣coo_matrix, csr_matrix 的使用
阿新 • • 發佈:2019-01-02
當對離散資料進行擬合預測時,往往要對特徵進行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()。
具體自行查文件吧。