python单词相似度计算_常见的距离算法和相似度计算方法

作者|奋发的菜鸟酱@知乎来源|https://zhuanlan.zhihu.com/p/138107999本文整理了常见的距离算法和相似度(系数)算法,并比较了欧氏距离和余弦距离间的不同之处。1、常见的距离算法1.1 欧几里得距离(Euclidean Distance)在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。相关联的范数...
摘要由CSDN通过智能技术生成

作者|奋发的菜鸟酱@知乎

来源|https://zhuanlan.zhihu.com/p/138107999

本文整理了常见的距离算法和相似度(系数)算法,并比较了欧氏距离和余弦距离间的不同之处。

1、常见的距离算法

1.1 欧几里得距离(Euclidean Distance)

在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。相关联的范数称为欧几里得范数。

Euclidean Distance是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。

代码:

>>> pdist = nn.PairwiseDistance(p=2)>>> input1 = torch.randn(100, 128)>>> input2 = torch.randn(100, 128)>>> output = pdist(input1, input2)

1.2 Earth Mover's Distance (EMD距离)

和欧式距离一样,它们都是一种距离度量的定义、可以用来测量某两个分布之间的距离。EMD主要应用在图像处理和语音信号处理领域。

EMD问题通俗解释: Earth Move翻译过来是搬土,指把P位置的m个坑的土,用最小的代价搬到Q位置的n个坑中,dij是pi到qj两个坑的距离,fij是从pi搬到qj的土量,则WORK工作量就是要最小化的目标。线性规划求解出fij后,再用fij对WORK作个归一化,就得到了EMD。EMD 实际上是线性规划中运输问题的最优解。

EMD具体定义可参考:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/RUBNER/emd.htm

C代码包: emd.h, emd.c, emd.iOpenCV:实现了EMD api,     pip install --upgrade setuptools    pip install numpy Matplotlib    pip install opencv-pythonimport numpy as npimport cv#p、q是两个矩阵,第一列表示权值,后面三列表示直方图或数量p=np.asarray([[0.4,100,40,22],        [0.3,211,20,2],        [0.2,32,190,150],        [0.1,2,100,100]],np.float32)q=np.array([[0.5,0,0,0],        [0.3,50,100,80],        [0.2,255,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值