系统聚类法的基本思想:
一开始将n个样品各自自成一类,这时类间的距离与样品间的距离是等价的;然后将距离最近的两类合并,并计算新类与其他类的类间距离,再按最小距离并类。这样每次缩小一类,直到所有的样品都成一类为止。这个并类过程可以用谱系聚类图表达出来。

类平均法:  类平均法把类与类之间的距离定义为两类样品两两之间的平均平方距离。设某一步将Gp类和Gq类合并成Gr类,他们的样品个数分别为n_p,n_q,n_r(n_r=n_p+n_r),则Gr与其他类Gk的类间距离的递推公式为:

D^2_{rk}=\frac{1}{n_rn_k}\sum\limits_{i\in G_r,j\in G_k} d^2_{ij}=\frac{1}{n_rn_k}[\sum\limits_{i\in G_p,j\in G_k} d^2_{ij} + \sum \limits_{i\in G_q,j\in G_k}d^2_{ij}]

化简为:D^2_{rk}=\frac{n_p}{n_r}D^2_{pk}+\frac{n_q}{n_r}D^2_{qk}

具体是实现

import numpy as np
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram,linkage

data=np.array([[190.33,43.77,9.73,60.54,49.01,9.04],
               [135.2,36.4,10.47,44.16,36.49,3.94],
               [95.21,22.83,9.3,22.44,22.81,2.8],
               [104.78,25.11,6.4,9.89,18.17,3.25],
               [128.41,27.63,8.94,12.58,23.99,3.27],
               [145.68,32.83,17.79,27.29,39.09,3.47]
               ])
z=linkage(data,"average")
print(z)
#画图
fig,ax=plt.subplots(figsize=(8,8))#指定figure的长宽为8*8
dendrogram(z,leaf_font_size=14)#画树状图
plt.show()

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐