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 (optional)
計算由連結矩陣 Z 定義的階層式分群的共表型相關係數
c
,該分群來自 \(n\) 個觀察值在 \(m\) 維度中的集合。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,因為這些點將位於不同角落的集群中 - 因此,這些集群之間的距離將更大。