簡體   English   中英

余弦相似度 Function 使用 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_similaritynp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM