- Python机器学习算法与实战
- 孙玉林 余本国
- 1233字
- 2025-02-18 02:36:38
2.4 数据样本间的距离
对于给定的数据样本,每个样本都具有多个特征,因此每个样本均是高维空间的一个点,那么在高维空间中如何比较样本之间的距离远近或相似程度呢?距离在聚类分析、分类等多种应用中都有重要的地位,不同的距离度量方式可能会得到不尽相同的分析结果,接下来简单介绍几种常用的距离度量方式。在计算样本间距离时会使用种子数据集,数据的读取程序如下:


种子数据中包含7个数值变量,分别表示种子的不同指标特性。对于该数据,可以使用多种距离度量方式,比较每个种子样本之间的关系。首先计算的是欧式距离和曼哈顿距离。
欧式距离用来度量欧几里得空间中两点间的直线距离,即对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的欧式距离定义为:

曼哈顿距离用以表明两个点在标准坐标系上的绝对轴距的总和,即对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的曼哈顿距离定义为:

对于种子数据的这两种距离,可以使用distance.cdist()函数进行计算,在下面的程序中,不仅计算出数据中样本的距离,还使用热力图将距离矩阵进行可视化,程序运行后的结果如图2-33所示。

从图2-33中可以发现,这两种距离在整体分布上是一致的,但是距离大小的取值不尽相同。而且在对角线周围形成了3个距离较近的对角块,而每个块和其他块的距离较远,说明针对该数据使用聚类算法,将其分为3类较合适。

图2-33 样本间欧式距离(左)和样本间曼哈顿距离(右)
下面同样针对种子数据,计算样本之间切比雪夫距离和余弦距离。
切比雪夫距离即为两个点之间各个坐标数值差的最大值,对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的切比雪夫距离定义为:

余弦相似性是通过测量两个向量夹角的余弦值来度量它们之间的相似性,对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的余弦距离可以定义为:

在下面的程序中,不仅计算出了相应的样本距离,还使用热力图将距离矩阵进行可视化,程序运行后的结果如图2-34所示。


图2-34 切比雪夫距离和余弦距离
从图2-34中可以发现,数据的切比雪夫距离的分布趋势和前面的两种数据分布较为一致,而样本间的余弦距离则有了较大的差异,形成了一大一小的对角矩阵块。
下面同样针对种子数据,计算样本之间相关系数距离和马氏距离。
相关系数距离是根据相关性定义的,数值越大距离越远,对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的相关系数距离可以定义为:

马氏距离表示数据的协方差距离。它是一种有效地计算两个未知样本集相似度的方法。对于n维空间中的两点X=(x1,x2,…,xn),Y=(y1,y2,…,yn),它们之间的马氏距离可以定义为:

使用下面的程序,不仅可以计算出相应的样本距离小,还利用热力图将距离矩阵进行可视化,程序运行后的结果如图2-35所示。



图2-35 相关系数距离和马氏距离
从图2-35中可以发现,数据的相关系数距离的分布趋势和前面的余弦距离的分布较一致,样本间的马氏距离则又呈现出一种新的距离大小分布情况。