scipy.cluster.hierarchy.

cophenet#

scipy.cluster.hierarchy.cophenet(Z, Y=None)[原始碼]#

計算由連結 Z 定義的階層式分群中,每個觀察值之間的共表型距離。

假設 pq 是不相交集群 st 中的原始觀察值,且 st 由直接父集群 u 連接。觀察值 ij 之間的共表型距離僅為集群 st 之間的距離。

參數:
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 和一個連結矩陣 ZX 中兩點之間的共表型距離是每個點所屬的最大兩個不同集群之間的距離

>>> 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 中每對點 ij 之間的共表型距離)

>>> 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,因為這些點將位於不同角落的集群中 - 因此,這些集群之間的距離將更大。