python 向量余弦相似度

£神魔★判官ぃ 2023-01-21 11:25 86阅读 0赞

方法1

  1. from math import sqrt
  2. import numpy as np
  3. def similarity(v1, v2):
  4. a=sqrt( np.dot(v1, v1))
  5. b=sqrt ( np.dot(v2, v2))
  6. if a==0 or b==0:
  7. return -1
  8. cos_dis=np.dot (v1, v2) / (b * a)
  9. print('cos:',cos_dis)
  10. return cos_dis
  11. v1=np.array([1,2,3,4])
  12. v2=np.array([1,2,2,3])
  13. print(similarity(v1,v2))

方法2

  1. import time
  2. from sklearn.metrics.pairwise import cosine_similarity
  3. a = [[1, 1], [1, 0.8]]
  4. start = time.time()
  5. #cosine_similarity 出来是对称矩阵,只需要取[0][1]就ok了
  6. print("1111",time.time() - start, cosine_similarity([[1,2,3,4],[1,2,2,3]])[0][1])

方法3

  1. def cos_sim(vector_a, vector_b):
  2. """
  3. 计算两个向量之间的余弦相似度
  4. :param vector_a: 向量 a
  5. :param vector_b: 向量 b
  6. :return: sim
  7. """
  8. vector_a = np.mat(vector_a)

发表评论

表情:
评论列表 (有 0 条评论,86人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ES计算余弦相似

    一、前言 最近在项目中做数据推荐的功能,比如,猜你喜欢。主动给用户推荐用户喜欢的商品。如何判断某个商品是不是用户喜欢的呢?在调研过程中,发现es可以做相似度的计算,相似度

    相关 余弦相似计算

    余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。