給出一個稀疏矩陣列表,計算矩陣中每列(或行)之間餘弦相似度的最佳方法是什麼?我寧願不重複n次選擇 - 兩次。在給定稀疏矩陣數據的情況下,Python中用於計算餘弦相似度的最快方法是什麼?
假設輸入矩陣是:
A=
[0 1 0 0 1
0 0 1 1 1
1 1 0 1 0]
的稀疏表示是:
A =
0, 1
0, 4
1, 2
1, 3
1, 4
2, 0
2, 1
2, 3
在Python,它是簡單的與基質輸入格式的工作:
import numpy as np
from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine
A = np.array(
[[0, 1, 0, 0, 1],
[0, 0, 1, 1, 1],
[1, 1, 0, 1, 0]])
dist_out = 1-pairwise_distances(A, metric="cosine")
dist_out
授予:
array([[ 1. , 0.40824829, 0.40824829],
[ 0.40824829, 1. , 0.33333333],
[ 0.40824829, 0.33333333, 1. ]])
這對於全矩陣輸入很好,但我真的想從稀疏表示開始(由於矩陣的大小和稀疏性)。任何關於如何最好地完成的想法?提前致謝。
聯不應該稀疏A的第一線是'0,1'? – seth
A通常有多大? – seth
Seth是的,我修改了它。謝謝。大小目前在成千上萬個非零的條目中,但我想要處理的數量級要大2-3個數量級。 – zbinsd