python雜湊與稀疏矩陣的處理

2021-09-10 03:51:05 字數 1458 閱讀 6889

雜湊的原理

字典: key  對映到  value

雜湊: key  對映到   key的雜湊值  對映到   value

例如查詢《現代漢語字典》       拼音「an」     對映到頁碼55      對映到   安

二 自定義雜湊函式

在nlp問題中,假設你想把乙個字串轉換為乙個數值型向量,可以使用one-hot-encoding也就是雜湊函式的方法來產生詞袋

input_string = "python for data science" # 輸入字串

def hashing_trick(input_string):

result= [0] * len(input_string) #初始化結果序列,長度同輸入序列

for word in input_string.split(" "):

index = abs(hash(word)) % len(input_string) # 自定義雜湊函式

result[index] = 1

return result

print(hashing_trick(input_string))

# 輸出結果 [0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

可見輸出的結果向量中的 1 ,代表了輸入字串的四個單詞。

結果向量中的1的位置,與單詞的雜湊值有關。

三 對稀疏矩陣的處理

由第二步的輸出結果可知 序列 [0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ,絕大部分的值為零,

因此稱該序列為 稀疏矩陣。

對稀疏矩陣的處理:

我們可以使用sklearn的csc_matrix方法,即乙個基於行的壓縮矩陣來進行處理。

a = [1,0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0]

from scipy.sparse import csc_matrix

print(csc_matrix(a))

# 輸出結果為

# (0, 0) 1 表示第零行,第零列 的元素為1。向量a可看作乙個一行二十列的矩陣

# (0, 5) 1

# (0, 16) 1

# (0, 18) 1

# 可見處理後的結果與輸入的稀疏矩陣一一對應

處理的結果是,將資料表示在座標(以行和列索引的元素表示)的單元格值中。

python稀疏矩陣

1.為什麼使用稀疏矩陣 稀疏矩陣的兩個動機 稀疏矩陣通常具有很大的維度,有時甚大到整個矩陣 零元素 與可用記憶體不想適應 另乙個動機是避免零矩陣元素的運算具有更好的效能。2.稀疏列矩陣csc compressed sparse column python中是使用csc matrix按列對矩陣進行壓縮...

python 生成隨機稀疏矩陣

import numpy as np import scipy.sparse as ss 生成隨機稀疏矩陣 num col 20num row 10num ele 40a np.random.randint 0,num row for in range num ele b np.random.ran...

稀疏矩陣相乘 Python版

given two sparse matricesaandb,return the result ofab.you may assume thata s column number is equal tob s row number.example a 1,0,0 1,0,3 b 7,0,0 0,0...