余弦相似度常用在文本分类、图片分类等应用中,来计算两个文本或两个图像之间的相似度。
如下图,向量
对于n 维向量
余弦相似度的取值范围在-1到1之间。余弦值越接近1,也就是两个向量越相似,完全相同时数值为1;相反反向时为-1;正交或不相关是为0。
求余弦相似度需要用到np.linalg.norm
操作,来求向量的范式,默认是L2范式,等同于求向量的欧式距离。
import numpy as np t1 = np.array([-0.4,0.8,0.5,-0.2,0.3]) t2 = np.array([-0.5,0.4,-0.2,0.7,-0.1]) def cos_sim(a, b): a_norm = np.linalg.norm(a) b_norm = np.linalg.norm(b) cos = np.dot(a,b)/(a_norm * b_norm) return cos print(cos_sim(t1,t2))
输出:0.23612240736068565