1.欧几里得距离:
用于计算二维或者三维空间的直线距离的问题。
可以在维度提升的情况下加入参数。
在大多数matlab的代码中,需要通过 pdist函数来实现对欧式距离的计算
pdist:语法规则
D = pdist(X)
D = pdist(X,distance)
D = pdist(X)
返回 X
中成对观测值之间的欧几里德距离。
D = pdist(X,Distance)
使用 Distance
指定的方法返回距离。
pdist函数相当于是将一个m * n形式的矩阵转换为一个 m*(m-1)/2
的距离向量。便于在matlab中实现高维度问题的处理,有需要的同学可以看下面的网址对pdist进行学习。
对pdist函数的详解:matlab的pdist函数详解 (mamicode.com)
2.曼哈顿距离:用于计算在无限网格中两点之间的最大差异距离
n维上的公式
其中红色,蓝色,黄色,线段表示A点到B点的曼哈顿距离,可以从红色线段得出曼哈顿距离的直观含义
matlab的pdist函数实现
%定义两个点坐标
point1 = [1,2];
point2 = [3,4];
%计算曼哈顿距离
man_distance = sum (abs(point1 - point2));
disp(man_distance)
%上面是正常的计算方法
%pdist计算
x = [0 0;1 0;0 2; 0 3];
D = pdist(x,'manhattan');
3.切比雪夫距离:计算无限网格中两点之间的最大差异距离
A = [1,2,3];
B = [4,5,6];
c = [A;B];
d = pdist(c,'chevychev' );
disp(d);
输出结果为:3
由此可见切比雪夫距离所求的是一个矩阵中各个元素的距离差值的最大值,而曼哈顿距离所求的是各个元素距离之和
4.闵可夫斯基距离(闵氏距离):
一种更通用的距离度量,可以表示为欧几里得距离和曼哈顿距离的一般形式。
根据p的变化来对pdist函数在matlab的形式进行选择
5.马氏距离:考虑了数据的统计特性,用于对多维空间的距离度量
因为对马氏距离的使用较少,所以不在本文总结了,有兴趣的同学可以看看下面的链接,以下是对马氏距离在matlab的使用的详解和实例。
MATLAB求马氏距离(Mahalanobis distance) - 凯鲁嘎吉 - 博客园 (cnblogs.com)
6.余弦距离:用于机器学习衡量样本向量之间的差异
这里多用于机器学习,后面会插入这些距离公式在机器学习中的使用和scipy的操作
7.汉明距离:用于两个字符串之间的差异,常用于基因序列的分析
X = [0 0; 1 0; 0 2];
D = pdist(x,'hamming')
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
这个距离公式涉及了十一种距离更加的全面,且带有matlab代码。
机器学习中应用到的各种距离介绍(附上Matlab代码)-腾讯云开发者社区-腾讯云 (tencent.com)
这个则是通过python中的scipy来对各个距离进行计算和学习,适合研究机器学习的同学研究
机器学习---常见的距离公式(欧氏距离、曼哈顿距离、标准化欧式距离、余弦距离、杰卡德距离、马氏距离、切比雪夫距离、闵可夫斯基距离、K-L散度)-CSDN博客