coo_matrix.
tocsr
(copy = False )
將此矩陣轉換為壓縮稀疏行格式,重復的條目將匯總在一起。
舉例:
from numpy import array from scipy.sparse import coo_matrix row = array([0, 0, 1, 3, 1, 0, 0]) col = array([0, 2, 1, 3, 1, 0, 0]) data = array([1, 1, 1, 1, 1, 1, 1]) A = coo_matrix((data, (row, col)), shape=(4, 4)).tocsr() A.toarray()
數組r中的元素和它對應下標的c列表中的元素組成了非零數字在稀疏矩陣中的坐標,r和c的第一個元素都是0,說明矩陣坐標(0,0)位置有非零數字,這個數字是幾呢?這就要看data數組了。由於data的數值都是1,(0,0)出現兩次,那么(0,0)位置的數值就是1+1=2。這里我們用r,c,data三個數組配合coo_matrix構造了一個稀疏矩陣。稀疏矩陣在計算機中的coo形式存儲就是這個的逆過程。
在做特征工程的過程中,對於那些取值是多個類別的變量,經常要用到One-Hot編碼,其結果就是得到稀疏矩陣X。現在要在數據集X的基礎上加上一些做過一個列變量變換的數據集features,features不是稀疏矩陣,要合並X和feature就需要進行如下操作:
if sparse.issparse(X): #判斷X是否稀疏 features = sparse.lil_matrix(features) 將features數據集用lil_matrix()稀疏化 X = sparse.hstack((X, features), 'csr') 橫向合並X和稀疏后的features,並存儲為csr格式
參考文獻: