相似性度量—距离2

来源:互联网 发布:pdf.js ajax 编辑:程序博客网 时间:2024/05/22 14:12

  接着介绍剩下的几种距离公式及pyhton实现。
5.夹角余弦(Cosine)
  几何中的夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一条来衡量样本向量之间的差异。
  (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式为:

cosθ=x1x2+y1y2x21+y21x22+y22
  该公式可用向量的点积公式推出。
  (2)对于两个n维样本点A(x11,x12,...,x1n)B(x21,x22,...,x2n)之间的夹角余弦为:
cosθ=ABAB

cosθ=k=1nx1kx2kk=1nx21kk=1nx22k

  夹角余弦的取值范围为[-1, 1],夹角余弦越大,表示两个向量的夹角越小。夹角余弦越小,表示两个向量的夹角越大。当两个向量的方向重合时,夹角余弦最大为1。当两个向量的方向完全相反时,夹角余弦最小为-1。
  (3)python实现夹角余弦。

 1. from numpy import * 2. vector1 = [1, 2, 3] 3. vector2 = [4, 5, 6] 4. cosV12 = dot(vector1, vector2)/(linalg.norm(vector1) * linalg.norm(vector2)) 5. print cosV12

6.汉明距离(Hamming Distance)
  (1)定义:两个等长字符串S1与S2之间的汉明距离定义为将其中一个变换为两一个所需的最小变换次数。例如,“1111”与“1001”之间的汉明距离为2.
  (2)python实现汉明距离。

 1. from numpy import * 2. matV = mat([[1, 1, 0, 1, 0, 1, 0, 0, 1], [0, 1, 1, 0, 0, 0, 1, 1, 1]]) 3. smstr = nonzero(matV[0] - matv[1]) 4. print shape(smstr[0])[0]

7.杰卡德相似系数(Jaccard Similarity Coefficient)
  (1)定义:两个集合AB的交集元素在AB的并集中所占的比例,称为两个集合的杰卡德相似系数,记为:J(A,B)。杰卡德相似系数可用来衡量两个集合的相似度。

J(A,B)=|AB||AB|

  (2)杰卡德距离:与杰卡德相似系数相反的概念,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。可表示为:
Jδ(A,B)=1J(A,B)=|AB||AB||AB|

  (3)python实现杰卡德距离

 1. from numpy import * 2. import scipy.spatial.distance as dist 3. matV = mat([[1, 1, 0, 1, 0, 1, 0, 0, 1], [0, 1, 1, 0, 0, 0, 1, 1, 1]]) 4. print "dist.jaccard:", dist.pdist(matV, 'jaccard')

  至此,几种相似性度量的几种方法介绍完毕。

原创粉丝点击