python学习[4]_利用numpy做一些距离的计算

利用numpy做一些距离的计算

  • 1、汉明距离的概念:汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

  • 2、代码示例:

#-*- coding:utf-8 -*-
from numpy import *

#汉明距离:字符串不同的个数
matV = mat([[1,1,0,1,0,1,0,0,1],[0,1,1,0,0,0,1,1,1]])
smstr = nonzero(matV[0]-matV[1])
print list(smstr)
print shape(smstr[0])
  • 3、欧式距离概念:欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

  • 4、曼哈顿距离概念:曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离因此曼哈顿距离又称为出租车距离,曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。

  • 5、数学上,切比雪夫距离[1] (Chebyshev distance)或是L∞度量是向量空间中的一种度量,二个点之间的距离定义为其各座标数值差绝对值的最大值。以(x1,y1)和(x2,y2)二点为例,其切比雪夫距离为max(|x2-x1|,|y2-y1|)。切比雪夫距离得名自俄罗斯数学家切比雪夫。

  • 6、代码示例:

# -*- coding:utf-8 -*-
from numpy import *

#实现欧式距离:矩阵相减乘以矩阵相减的转置,开根号
vector1 = mat([1,2,5])
vector2 = mat([4,7,7])
print sqrt((vector1-vector2)*(vector1-vector2).T)

#实现曼哈顿距离:对应坐标相减的绝对值之和
print sum(abs(vector1-vector2))

#实现切比雪夫距离:对应坐标相减的绝对值最大项
print abs(vector1-vector2).max()

#实现夹角余弦
cosV12 = sum(vector1*vector2.T)/(linalg.norm(vector1)*linalg.norm(vector2))
print cosV12

print dot([1,2,5],[4,7,7])
  • 7、numpy里面有很多东西都是现成,用一次熟悉一下,下次再使用时,比如在一些聚类算法里面需要进行距离的度量,直接调出来使用即可,非常方便。

猜你喜欢

转载自blog.csdn.net/yuxiao_v/article/details/60364516