常见的相似或相异程度计算方法

  

如何衡量数据点之间的相似或相异程度是聚类算法的基础问题,会直接影响聚类分析的效果,最直观的方法是使用距离函数或者相似性函数。

常见的相似或相异程度计算方法。

1。计算公式

1。闵可夫斯基距离

很多距离计算方法都可以归结为基于向量p范数的距离,即闵可夫斯基距离。

dij=(sumsh=1 | xihxjh | p) 1/pdij=(sumh=1 s | xihxjh | p) 1/p

2。欧氏距离

参数p=2,闵可夫斯基距离退化为欧几里得距离,使用欧氏距离的聚类算法大多只能发现低维空间中呈超球分布的数据,并且对数据集中的噪声比较敏感。

3。城市街区距离

参数p=1,闵可夫斯基距离演变为街区距离,街区距离可以有效提高模糊聚类算法对噪声或者孤立点的鲁棒性。

4。一口距离

参数p=无穷,闵可夫斯基距离演变为一口距离。

5。余弦相似度

6。Mahalanobis距离

Mahalanobis距离为原特征空间中的数据在线性投影空间欧式距离,使用Mahalanobis距离能够使得聚类算法成功发现数据集里成超椭球型分布的类簇,但是Mahalanobis距离会带来较大的计算量。

7。选择距离

选择距离对数据集里的噪声不敏感。

8。特征加权距离

2。代码

代码,

 import  numpy  as  np
  时间=a  np.array ([1、2、3、4])
  时间=b  np.array ([4、3、2、1) print  aprint  b # Euclidean  distancedistEu =, np.sqrt (np.sum ((a - b) * * 2) print “Euclidean  distance =, distEu # City-block  distancedistCb =, np.sum (np.abs (a - b)) print “City-block  distance =, distCb # Sup  distancedistSup =,马克斯(np.abs (a - b)) print “Sup  distance =, distSup # Cosine  similaritycosineSimi =, np.dot (a, b),/, (np.sqrt (np.sum (* * 2)), *, np.sqrt (np.sum (b * * 2))) print “Cosine  similarity =, cosineSimi # Alternative  distancebeta =, 0.5 distalter =, 1,安康;np.exp (-beta  *, np.sqrt (np.sum ((a 安康;b) * * 2))) print “Alternative  distance =, distAlter # Feature  weighted  distanceweigh =, np.array ([0.5, 0.3, 0.1, 0.1])
  时间=distFea  np.sqrt (np.dot(重量,np.abs (a - b))) print “Feature  weighted  distance =,”,distFea 

输出,

 [1, 2, 3, 4)
  (4,3,2,1]Euclidean  distance =,, 4.472135955 city-block  distance =,, 8 sup  distance =,, 3 cosine  similarity =,, 0.666666666667 alternative  distance =,, 0.89312207434 feature  weighted  distance =, 

1.48323969742,

常见的相似或相异程度计算方法