python 数据框中单链接的层次聚类

hierarchical clustering with single linkage in python dataframe

我有一个 pandas 数据框来进行层次聚类。

    A   B   C
A   0   1   3
B   1   0   2
C   3   2   0

我试过的代码:

z=linkage(df,'single')
dn = dendrogram(z,labels=index)

然后我得到了一个奇怪的结果:A&B 作为一个簇,距离为 1.73(正确应该是 1),然后 A&B&C 作为一个簇,距离为 3.46(正确应该是 2)。

scipy.cluster.hierarchy.linkage中使用的默认距离是欧氏距离,定义为d(x,y) = \sqrt(\sum(x_i-y_i))(可以查看here)。我认为您感到困惑的原因是因为您取平均值(并计算均方根误差)。

所以在你的情况下 d(A,B) = \sqrt(3) = 1.73

那么,由于你的链接是single,(A,B)和C的距离就是d(A,C)和d(B,C)之间的最小值,也就是d(B,C) = \sqrt(12)