Scipy 树状图中的标签排序
Label Ordering in Scipy Dendrogram
在python中,我有一个N乘N的距离矩阵dmat,其中dmat[i,j]编码实体i到实体j的距离。我想查看树状图。我做了:
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pylab as plt
labels=[name of entity 1,2,3,...]
Z=linkage(dmat)
dn=dendrogram(Z,labels=labels)
plt.show()
但是标签顺序看起来不对。有些实体与 dmat 非常接近,但并未反映在树状图中。怎么回事?
linkage
的第一个参数必须是 condensed 格式的距离,或者是被聚类的点数组。如果传递正方形 (N x N) 距离矩阵,linkage
会将其解释为 N 维 space.
中的 N 个点
您可以使用 scipy.spatial.distance.squareform
.
从方阵转换为压缩形式
将此添加到文件的开头
from scipy.spatial.distance import squareform
并替换这个
Z=linkage(dmat)
和
Z = linkage(squareform(dmat))
在python中,我有一个N乘N的距离矩阵dmat,其中dmat[i,j]编码实体i到实体j的距离。我想查看树状图。我做了:
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pylab as plt
labels=[name of entity 1,2,3,...]
Z=linkage(dmat)
dn=dendrogram(Z,labels=labels)
plt.show()
但是标签顺序看起来不对。有些实体与 dmat 非常接近,但并未反映在树状图中。怎么回事?
linkage
的第一个参数必须是 condensed 格式的距离,或者是被聚类的点数组。如果传递正方形 (N x N) 距离矩阵,linkage
会将其解释为 N 维 space.
您可以使用 scipy.spatial.distance.squareform
.
将此添加到文件的开头
from scipy.spatial.distance import squareform
并替换这个
Z=linkage(dmat)
和
Z = linkage(squareform(dmat))