python数据框架中的单链接层次聚类
我有一个数据框架来进行分层聚类python数据框架中的单链接层次聚类,python,dataframe,hierarchical-clustering,Python,Dataframe,Hierarchical Clustering,我有一个数据框架来进行分层聚类 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中使用的默认距离是
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))
(您可以检查它)。我认为你感到困惑的原因是因为你在取平均值(并计算均方根误差)
所以在你的例子中d(A,B)=\sqrt(3)=1.73
然后,由于链接是单链接,因此(A,B)和C之间的距离是d(A,C)和d(B,C)之间的最小距离,即d(B,C)=\sqrt(12)