scipy.cluster.hierarchy.
cophenet#
- scipy.cluster.hierarchy.cophenet(Z, Y=None)[源代碼]#
計算由鏈接
Z
定義的層次聚類中每個觀測值之間的同質遺傳距離。假設
p
和q
是不相交群集s
和t
中的原始觀測值,並且s
和t
通過直接父群集u
連接起來。觀測值i
和j
之間的同質遺傳距離僅僅是群集s
和t
之間的距離。- 參數:
- Zndarray
編碼為陣列的層次聚類(請參閱
linkage
函數)。- Yndarray(可選)
计算给定由一组 \(n\) 维度中 \(m\) 个观察值的连锁矩阵 Z 定义的分层聚类的共现象相关系数
c
。 Y 是 Z 所生成的凝聚距离矩阵。
- 返回:
- cndarray
共现象相关系数距离(如果传递了
Y
)。- dndarray
凝聚形式的共现象距离矩阵。\(ij\) 第个条目是原始观察 \(i\) 和 \(j\) 之间的共现象距离。
另请参阅
linkage
对连锁矩阵的描述。
scipy.spatial.distance.squareform
将凝聚矩阵转换为方形矩阵。
示例
>>> from scipy.cluster.hierarchy import single, cophenet >>> from scipy.spatial.distance import pdist, squareform
给出数据集
X
和连锁矩阵Z
,X
中两点之间的共现象距离是我们对应于此数据集的点之间的最大两个不同簇之间的距离>>> X = [[0, 0], [0, 1], [1, 0], ... [0, 4], [0, 3], [1, 4], ... [4, 0], [3, 0], [4, 1], ... [4, 4], [3, 4], [4, 3]]
X
x x x x x x x x x x x x
>>> Z = single(pdist(X)) >>> Z array([[ 0., 1., 1., 2.], [ 2., 12., 1., 3.], [ 3., 4., 1., 2.], [ 5., 14., 1., 3.], [ 6., 7., 1., 2.], [ 8., 16., 1., 3.], [ 9., 10., 1., 2.], [11., 18., 1., 3.], [13., 15., 2., 6.], [17., 20., 2., 9.], [19., 21., 2., 12.]]) >>> cophenet(Z) array([1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 1., 1., 1.])
方法
scipy.cluster.hierarchy.cophenet
的输出以凝聚形式表示。我们可以使用scipy.spatial.distance.squareform
将输出显示为常规矩阵(其中每个元素ij
表示X
中i
、j
两点之间的共现象距离)>>> squareform(cophenet(Z)) array([[0., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [1., 0., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [1., 1., 0., 2., 2., 2., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 0., 1., 1., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 1., 0., 1., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 1., 1., 0., 2., 2., 2., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 0., 1., 1., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 1., 0., 1., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 1., 1., 0., 2., 2., 2.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 0., 1., 1.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 0., 1.], [2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 0.]])
此示例中,在
X
的点(非常接近,即在彼此的角中)之间的共现象距离为 1。对于其他点对,共现象距离为 2,因为此类点将位于不同角的簇中 - 因此,此类簇之间的距离会更大。