python求两个点的欧氏距离_深度学习中常用的几种距离度量算法

来源自个人博客:
深度学习中常见几类距离度量算法 - TanShui Can Purr
1.欧式距离

2.曼哈顿距离

两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离:

3.切比雪夫距离

4.闵可夫斯基距离

5.标准化欧式距离

通过较为简洁的推导过程可以得出一对n维向量间的标准化欧氏距离指标及其计算公式的表达式:

6.马氏距离

马氏距离用于衡量两个坐标点在空间中的相对位置关系,其本质是基于协方差的距离.相较于欧氏距离,马氏距离具有考虑变量间相关性的特点(如身高信息往往与体重信息相关联)并且具有尺度独立性(scale-invariant),即不受测量单位的影响.对于一个服从多元正态分布的随机向量X=(X₁,X₂,…,Xₙ)⁴,其均值向量μ=E[X]则为

协方差矩阵为Σ的多变量矢量:

其马氏距离:

当协方差矩阵呈现单位阵特征时,则马氏距离将退化为欧几里得度量;而当该协方差阵具有对角线属性时,则该马氏度量可被称为归一化形式的欧氏度量。

其中σi是xi的标准差。
7.巴氏距离

对于连续概率分布,Bhattacharyya系数被定义为:

该系数作为衡量两个统计样本间相似性程度的一个指标,在评估所考察的两个样本间的相对接近程度方面具有重要应用价值。
8.汉明距离
汉明距离被应用于数据传输差错控制编码领域中作为一个衡量工具来评估信息码元间的差异程度它代表了两个相同长度码元在对应位置上数值不同的位置数量我们用d(x y)来表示码元x与y之间的汉明距离通过对两个字符串执行异或运算并统计所得结果中出现过量的数值个数我们就可以得出它们之间的汉明距离值例如码元'1011101'与'1001001'之间存在两位不同其汉明距离即为2而码元'2143896'与'2233796'之间则相差三位对应的汉明距离为3最后比较接近的字符串如'toned'与roses其间的差异程度同样可以通过计算得出其相应的汉明距
9.夹角余弦

10.杰卡德相似系数

11.皮尔逊系数



12.DTW距离


13.信息熵

简单说来,各种"距离"的应用场景简单概括为:
空间:欧氏距离
路径类别涉及曼哈顿距离以及国际象棋国王所对应于的切比雪夫距离;其中这三种的距离统称为闵可夫斯基距离。
加权:标准化欧氏距离
排除量纲和依存:马氏距离
向量差距:夹角余弦
编码差别:汉明距离
集合近似度:杰卡德相似系数与距离
相关:相关系数与相关距离
时间序列:DTW距离
