余弦相似度公式
\(\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(a ** 2, axis=1)) / np.sqrt(np.dot(a, b.T))
return cos_result