当前位置:   article > 正文

scipy层次聚类_scipy.cluster.hierarchy

scipy.cluster.hierarchy

文章目录

linkage

linkagescipy中的一个层次聚类函数,可将距离最近的数聚在一起,形成聚类簇;多个聚类簇再次聚类,得到更高层级的聚类簇。重复这个过程,直到所有的聚类簇都聚成一个最终的类。

其调用方法为

scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=False)
  • 1

其中method表示聚类方法metric表示聚类时采用的距离。在详细介绍这两者的可选参数之前,先对linkage做一个简单示例。

from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt
X = [[i] for i in [2, 8, 0, 4, 1, 9, 9, 0]]

Z = linkage(X, 'single')
print(Z)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Z Z Z的结果如下,是一个二维数组,记 X X X的长度为 n n n,则 Z Z Z尺寸为 ( n − 1 ) × 4 (n-1)\times4 (n1)×4。其中 Z i 0 , Z i 1 Z_{i0}, Z_{i1} Zi0,Zi1属于第 n + i n+i n+i聚类簇,且二者之间的距离为 Z i 2 Z_{i2} Zi2 Z i 3 Z_{i3} Zi3表示对于一个新形成的聚类簇中的元素个数。

i i i Z i 0 Z_{i0} Zi0 Z i 1 Z_{i1} Zi1 Z i 2 Z_{i2} Zi2 Z i 3 Z_{i3} Zi3类别
027028
156029
2041210
38101411
4191312
53112513
612134814

Z i 0 , Z i 1 Z_{i0}, Z_{i1} Zi0,Zi1中的这些数显然不是从 X X X中抽取得到的,而是 X X X中每个元素的所属类别,映射如下

28041990
01234567

Z Z Z的第一行表示, 2 2 2 7 7 7组成一个簇,且 2 , 7 2,7 2,7之间距离为0,根据上表, 2 , 7 2,7 2,7对应的是两个 0 0 0,所以二者之间的距离为0。且二者新形成的聚类簇为 n + i = 8 + 0 = 8 n+i=8+0=8 n+i=8+0=8,二者组成的簇共有两个元素。第二、三行与之类似。

第四行表明, 8 8 8 10 10 10之间距离为1,其中 8 8 8是由 2 , 7 2,7 2,7两个位置的两个 0 0 0组成; 10 10 10 0 , 4 0,4 0,4两个位置组成的,以此类推。

上面的矩阵可通过dendrogram进行可视化,结果如下

dn = dendrogram(Z)
plt.show()
  • 1
  • 2

在这里插入图片描述

method

可选方法及其含义如下

  • single 最小距离
  • complete 最大距离
  • average 平均距离
  • weighted 加权距离
  • centroid 中心距离
  • median 和中心距离相似
  • ward 基于Ward方差最小化算法

metric

可选距离包括下表

距离函数备注表达式
braycurtisBray-Curtis距离 ∑ ∣ u i − v i ∣ ∑ ∣ u i + v i ∣ \frac{\sum\vert u_i-v_i\vert}{\sum\vert u_i+v_i\vert} ui+viuivi
canberraCanberra距离 ∑ ∣ u i − v i ∣ ∑ ∣ u i ∣ + ∣ v i ∣ \frac{\sum\vert u_i-v_i\vert}{\sum\vert u_i\vert+\vert v_i\vert} ui+viuivi
chebyshev切比雪夫距离 max ⁡ ( u ⃗ − v ⃗ ) \max(\vec u-\vec v) max(u v )
minkowski([,p])闵氏距离 ∥ u − v ∥ p \Vert u-v\Vert_p uvp
cityblock曼哈顿距离 ∑ ∣ u i − v i ∣ \sum\vert u_i-v_i\vert uivi
euclidean欧氏距离 ∥ u − v ∥ 2 \Vert u-v\Vert_2 uv2
sqeuclidean平方欧式距离 ∑ w i ∣ u i − v i ∣ 2 \sum w_i\vert u_i-v_i\vert^2 wiuivi2
cosine余弦距离 1 − u ⋅ v ∥ u ∥ 2 ∥ v ∥ 2 1-\frac{u\cdot v}{\Vert u\Vert_2\Vert v\Vert_2} 1u2v2uv
correlation相关距离 1 − ( u − u ˉ ) ( v − v ˉ ) ∥ u − u ˉ ∥ 2 ∥ v − v ˉ ∥ 2 1-\frac{(u-\bar u)(v-\bar v)}{\Vert u-\bar u\Vert_2\Vert v-\bar v\Vert_2} 1uuˉ2vvˉ2(uuˉ)(vvˉ)
jensenshannonJS距离
mahalanobis马氏距离
seuclidean归一化欧式距离
距离函数备注表达式
diceDice距离 ∣ 10 ∣ + ∣ 01 ∣ 2 ∣ 11 ∣ + ∣ 01 ∣ + ∣ 10 ∣ \frac{\vert10\vert+\vert01\vert}{2\vert11\vert+\vert01\vert+\vert10\vert} 2∣11∣+∣01∣+∣10∣∣10∣+∣01∣
hamming汉明距离 [ 01 ] + [ 10 ] N \frac{[01]+[10]}{N} N[01]+[10]
jaccard杰卡德距离 ∣ 10 ∣ + ∣ 01 ∣ ∣ 11 ∣ + ∣ 01 ∣ + ∣ 10 ∣ \frac{\vert10\vert+\vert01\vert}{\vert11\vert+\vert01\vert+\vert10\vert} ∣11∣+∣01∣+∣10∣∣10∣+∣01∣
kulczynski1Kulczynski距离 [ 11 ] [ 01 ] + [ 10 ] \frac{[11]}{[01]+[10]} [01]+[10][11]
rogerstanimoto谷本距离 R [ 11 ] + [ 00 ] + R \frac{R}{[11]+[00]+R} [11]+[00]+RR
russellraoRussell&Rao距离 N − [ 11 ] N \frac{N-[11]}{N} NN[11]
sokalmichenerSokal-Michener距离 R R + [ 11 ] + [ 00 ] \frac{R}{R+[11]+[00]} R+[11]+[00]R
sokalsneathSokal-Sneath距离 R [ 11 ] + [ 00 ] + R \frac{R}{[11]+[00]+R} [11]+[00]+RR
yuleYule距离 2 [ 01 ] ⋅ [ 10 ] [ 11 ] ⋅ [ 00 ] + [ 10 ] ⋅ [ 01 ] \frac{2[01]\cdot[10]}{[11]\cdot[00]+[10]\cdot[01]} [11][00]+[10][01]2[01][10]

可用方法method,主要是针对距离的聚类算法,下面记D为距离值,d为采用的方法

  • signle d ( u , v ) = min ⁡ ( D ( u i , v j ) ) d(u,v)=\min(D(u_i,v_j)) d(u,v)=min(D(ui,vj))
  • complete d ( u , v ) = max ⁡ ( D ( u i , v j ) ) d(u,v)=\max(D(u_i,v_j)) d(u,v)=max(D(ui,vj))
  • average d ( u , v ) = ∑ i , j D ( u i , v j ) d(u,v)=\sum_{i,j}\frac{D(u_i,v_j)}{} d(u,v)=i,jD(ui,vj)
  • weighted d ( u , v ) = d ( s , v ) + d ( t , v ) 2 d(u,v)=\frac{d(s,v)+d(t,v)}{2} d(u,v)=2d(s,v)+d(t,v)
  • centroid d ( s , t ) = ∥ c s − c t ∥ 2 d(s,t)=\Vert c_s-c_t\Vert_2 d(s,t)=csct2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/774676
推荐阅读
相关标签
  

闽ICP备14008679号