[英]create a function to compute all pairwise cosine similarity of the row vectors in a 2-D matrix using only numpy
[英]Cosine Similarity Function Using Numpy
我已了解以下情況。
我必須編寫一個 function ,它接受一個向量 x 和一個向量列表,並在列表中使用余弦相似度找到與 x 最相似的向量的索引。
到目前為止,我已經嘗試使用以下方法,但沒有成功。 我對此很陌生,因此將不勝感激!
import numpy as np
def most_similar(x, v_list):
dot_product = np.dot(x, v_list)
norm_a = np.linalg.norm(x)
norm_b = np.linalg.norm(v_list)
return dot_product / (norm_a * norm_b)
將sklearn.metrics.pairwise.cosine_similarity
與np.argmax
一起使用可能會更有效(但我沒有進行任何基准測試),我對您的代碼進行了輕微更改:
def most_similar(x, M):
dot_product = np.dot(x, M.T)
norm_a = np.linalg.norm(x)
norm_b = np.linalg.norm(M,axis=1)
score = dot_product / (norm_a * norm_b)
return np.argmax(score)
您可能需要遍歷一個列表,但這里的參數M
是一個 numpy 數組(每一行都是您的向量, v_list
的元素),您可以使用np.array(v_list)
輕松獲得。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.