當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy hierarchy.cophenet用法及代碼示例


本文簡要介紹 python 語言中 scipy.cluster.hierarchy.cophenet 的用法。

用法:

scipy.cluster.hierarchy.cophenet(Z, Y=None)#

計算由鏈接 Z 定義的層次聚類中每個觀察值之間的共同距離。

假設 pq 分別是不相交集群 st 中的原始觀測值,並且 st 由直接父集群 u 加入。觀測值 ij 之間的共同距離就是聚類 st 之間的距離。

參數

Z ndarray

編碼為數組的層次聚類(參見 linkage 函數)。

Y ndarray(可選)

計算共生相關係數c由鏈接矩陣定義的層次聚類Z的一組\(n\) 中的觀察\(m\) 維度。Y是壓縮距離矩陣,其中Z生成了。

返回

c ndarray

cophentic 相關距離(如果通過Y)。

d ndarray

壓縮形式的共生距離矩陣。 th 條目是原始觀測值 之間的共同距離。

例子

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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.cluster.hierarchy.cophenet。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。