各类距离和python实现

来源:互联网 发布:python执行exe程序 编辑:程序博客网 时间:2024/06/06 15:44
  • 先看一下这个,我这里主要是把实现这些距离的公式用python表达出来,其实网上其他人也都写过,但我还是写一遍
  • http://blog.csdn.net/shiwei408/article/details/7602324   点击打开链接
  • 闵可夫斯基距离
  • 欧式距离
  • 哈曼顿距离
  • 切比雪夫距离
  • 夹角余弦
  • 汉明距离
  • 杰卡德相似系数
1、欧式距离:


如果是两个向量AB运算的画可以(A-B)(A-B)T的开根

import numpy as np
vec1=np.array([1,2,3])
vec2=np.array([4,5,6])
print np.sqrt( (vec1-vec2)*(vec1-vec2).T )
#或者
print ( (vec1-vec2)*(vec1-vec2).T )**0.5
2、哈曼顿距离:
     
import numpy as np
vec1=np.array([1,2,3])
vec2=np.array([4,5,6])
print sum( np.abs(vec1-vec2) )
3、切比雪夫距离
     
import numpy as np
vec1=np.array([1,2,3])
vec2=np.array([4,5,6])
print np.abs( (vec1-vec2).max() )
4、夹角余弦

 
import numpy as np
vec1=np.array([1,2])
vec2=np.array([3,4])
cosv12=np.dot(vec1,vec2)  /  ( np.linalg.norm (vec1) * (np.linalg.norm(vec2) ) )
print cosv12
5、汉明距离

应用:信息编码

import numpy as np
vec1=np.mat([1,1,1,1])
vec2=np.mat([1,0,0,1])
smstr=np.nonzero(vec1-vec2)
print np.shape(smstr)[1]
6、杰卡德相似系数

应用:衡量两个集合相似度的一种指标




import numpy as np
import scipy.spatial.distance as dist
matv=np.mat([[1,1,0,1],[0,1,1,0]])
print "dist.jaccard",dist.pdist(matv,'jaccard')

阅读全文
0 0
原创粉丝点击