在 聚类问题中,相似度直接影响聚类的结果,其选择是聚类的根本问题。将样本看作n维向量空间中点的集合,则样本间的相似度可用样本在该向量空间的距离表示。
距离度量的基本性质
-
非负性 :
-
同一性:
-
对称性:
-
直递性:
可理解为两边之和大于第三边,即三角不等式。
八种常用的度量方式
1、闵可夫斯基距离
定义:给定n维空间中的任意两点
这两点间的闵可夫斯基距离为:
缺点:
(1)没有考虑各个分量量纲不同的问题。
(2)没有考虑各个分量的分布不同的问题
(3)没有考虑变量间的相关关系
因此计算闵可夫斯基距离前常对数据进行标准化和中心化处理 。
2、曼哈顿距离
闵可夫斯基距离是一类距离,当其参数p=1时,称为曼哈顿距离:
曼哈顿距离又称为计程车距离,其直观表示为两点在n维标准坐标系上的绝对轴距之和。图示为给定二维空间上的两点
的曼哈顿距离,不失一般性,可推广到n维空间。
曼哈顿距离计算速度快,某些情况下具有更好的稳定性。但其缺点为如果数据集中某些特征值很大,这些特征会掩盖其他特征间的邻近关系。
Python代码计算曼哈顿距离:
# 计算点a(1,2,3),b(4,5,6)的曼哈顿距离
import numpy as np
def distman(a, b):
return np.sum(abs(a - b))
a=np.array([1,2,3])
b=np.array([4,5,6])
print('a与b的曼哈顿距离:',distman(a,b))
>> a与b的曼哈顿距离: 9
3、欧氏距离
当闵可夫斯基距离的参数p=2时,称为欧几里得距离:
欧几里得距离(欧氏距离)是n维空间中两点的真实距离,直观表示为两点在n维标准坐标系中的直线距离。图示为给定二维空间上的两点
的欧几里得距离, 不失一般性,可推广到n维空间。
Python代码计算欧几里得距离:
# 计算点a(1,2,3),b(4,5,6)的欧氏距离
import numpy as np
def disted(a, b):
return np.sqrt(np.sum(np