余弦相似度公式
\(\cos\alpha={\vec a} {\cdot} {\vec b}{|\vec a||\vec b|}\)
向量\(\vec a\)與向量\(\vec b\)的余弦相似度等於,向量\(\vec a\)與向量\(\vec b\)的點積,除以向量\(\vec a\)與向量\(\vec b\)的長度
函數cos_sim計算了向量的余弦相似度,參數b為一個矩陣n\(\times\)m的矩陣,表示n個m維的向量。
def cos_sim(a,b):
"""
計算a,b向量的余弦相似度
@param a: 1*m的向量
@param b: n*m的矩陣
@return: 1*n的值,每個樣本的bi與a的余弦相似度
"""
cos_result = np.dot(a, b.T) / np.sqrt(np.sum(b ** 2, axis=1)) / np.sqrt(np.dot(a, a.T))
return cos_result