Hi,欢迎光临:我的网站! 收藏我们

numpy欧氏距离和余弦相似度

本文关键词:来源:原创 作者:admin

  展开全文

  二者相反的中央,就是在机械进修中都可以用来计算相似度,然则二者的含义有很大年夜差异,以我的了解就是:

  前者是算作坐标系中两个点,来计算两点之间的距离;

  后者是算作坐标系中两个向量,来计算两向量之间的夹角。

  前者因为是点,所以通俗指位置上的差异,即距离;

  后者因为是向量,所以通俗指标的目标上的差异,即所成夹角。

  以下图所示:

  

  数据项A和B在坐标图中当作点时,二者相似度为距离dist(A,B),可经过欧氏距离(也叫欧几里得距离)公式计算:

  

  当作向量时,二者相似度为cosθ,可经过余弦公式计算:

  

  假定||A||、||B||表现向量A、B的2范数,例如向量[1,2,3]的2范数为:

  √(12+22+32)= √14

  numpy中供给了范数的计算对象:linalg.norm()

  所以计算cosθ起来十分便利(假定A、B均为列向量):

  [python] view

  plain copy

  print?

  因为有了linalg.norm(),欧氏距离公式完成起来更加便利:

  [python] view

  plain copy

  print?

  关于归一化:

  因为余弦值的范围是 [-1,+1] ,相似度计算时通俗需求把值归一化到 [0,1],普统统过以下方法:

  sim=0.5 + 0.5 * cosθ

  若在欧氏距离公式中,取值范围会很大年夜,普统统过以下方法归一化:

  sim=1 / (1 + dist(X,Y))

  说完了道理,复杂扯下实践意义,举个栗子吧:

  例如某T恤从100块降到了50块(A(100,50)),某西装从1000块降到了500块(B(1000,500))

  那么T恤和西装都是降价了50%,二者的价格变更趋势不合,余弦相似度为十分值,即二者有很高的变更趋势相似度

  然则从商品价格自身的角度来讲,二者相差了好几百块的差距,欧氏距离较大年夜,即二者有较低的价格相似度

欢迎转载分享但请注明出处及链接,商业媒体使用请获得相关授权。
分享到:
|??2019-11-09发布??|?? 次关注??? 收藏

我也来留个脚印

最新评论 已有条评论