詞頻矩陣TfidfVectorizer結果與稀疏矩陣csr_matrix的遍歷

關係

TfidfVectorizer的結果是由csr_matrix這種方式組織的,在數據結構中稀疏矩陣的實現是csr_matrix。這是由於矩陣中有大量的0元素佔據了大量的空間,從而採用稀疏矩陣來壓縮空間。

csr_matrix可以調用toarray()方法轉變爲真正的矩陣,利用numpy的索引方式來進行對元素的精確索引。

問題

但是有時候由於矩陣太大,而使得csr_matrix轉變爲numpy矩陣時,計算機的內存會“爆掉”。使得無法轉變,這就會帶來一個問題——無法使用簡潔的方式來索引元素。

解決方法

getrow()方法,需要輸入行號,可以取出對應的行的數據,在利用toarray()來將其轉變爲numpy的單行矩陣,就可以索引了。

getcol()方法,與上述方法類似,但是以列爲單位處理。

__getitem__()方法,需要輸入一個元組,這個tuple是代表了矩陣中元素的下標位置,返回的是對應位置的數據。

示例

print(csr)
>>(0, 40831)	0.21960834178465002
  (0, 30192)	0.10678123442791115
  (0, 10846)	0.18189940521778225
  (0, 22745)	0.20618725734599005
  (0, 45612)	0.0976692130846666
  (0, 40065)	0.24275078611018666
  (0, 49428)	0.05342573253991302
  (0, 45671)	0.17495487380802463
  (0, 21370)	0.11474053386714585
  (0, 29358)	0.057332939970307854
  (0, 40742)	0.2676618164681293
  (0, 44919)	0.20567536750057577
  (0, 42582)	0.32131715612054834
  (0, 30483)	0.3411862682847532
  (0, 27925)	0.1492153155544641
  (0, 39765)	0.2333712052409058
  (0, 22138)	0.32131715612054834
  (0, 35148)	0.3411862682847532
  (0, 38124)	0.3411862682847532
  (1, 46983)	0.36753693775292995
  (1, 27355)	0.24008825527611988
  (1, 24111)	0.2894764022964109
  (1, 44361)	0.15111782785302094
  (1, 40344)	0.7361023494519706
  (1, 30192)	0.2733685656483771
  :	:
  (108621, 39426)	0.5882450458501409
  (108621, 44361)	0.2551328023049197
  (108621, 29358)	0.2478040763357938
  (108622, 11503)	0.41317392611973686
  (108622, 10238)	0.47357367792387195
  (108622, 14307)	0.2072486799175126
  (108622, 11804)	0.28687179999939544
  (108622, 17701)	0.2946483987714427
  (108622, 3473)	0.2979900334309786
  (108622, 16957)	0.16972003662264928
  (108622, 47038)	0.2466369829395856
  (108622, 10105)	0.17218931039751523
  (108622, 1453)	0.2693420943820634
  (108622, 27073)	0.24521646611592904
  (108622, 13406)	0.07691004761215771
  (108622, 24111)	0.16248297773383003
  (108622, 44361)	0.08482237054018961
  (108622, 49428)	0.07677128778575688
  (108622, 29358)	0.08238583590362115
  (108623, 21272)	0.6327215632236254
  (108623, 45606)	0.5355979771231804
  (108623, 24044)	0.34391766732789003
  (108623, 30050)	0.27389383741176027
  (108623, 46971)	0.325932888948742
  (108623, 29358)	0.11519021730398242
csr.__getitem__((0, 40831))
>>0.21960834178465002
row_list = csr.getrow(0)
row_list = row_list.toarray()
row_list[0. 40831]
>>0.21960834178465002
col_list = res.getcol(40831)
col_list = col_list.toarray()
col_list[0, 0]
>>0.21960834178465002
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章