scipy.cluster.hierarchy.

maxdists#

scipy.cluster.hierarchy.maxdists(Z)[source]#

傳回任何非單例集群之間的最大距離。

參數:
Zndarray

編碼為矩陣的階層式分群。請參閱 linkage 以取得更多資訊。

傳回值:
maxdistsndarray

一個大小為 (n-1) 的雙精度 numpy 陣列;MD[i] 代表索引為 i 的節點以下 (包含該節點) 的任何集群 (包含單例) 之間的最大距離。更具體來說,MD[i] = Z[Q(i)-n, 2].max(),其中 Q(i) 是節點 i 以下 (包含該節點) 的所有節點索引集合。

另請參閱

linkage

以取得關於連結矩陣的描述。

is_monotonic

以測試連結矩陣的單調性。

範例

>>> from scipy.cluster.hierarchy import median, maxdists
>>> from scipy.spatial.distance import pdist

給定一個連結矩陣 Zscipy.cluster.hierarchy.maxdists 會針對每個新產生的集群 (亦即,連結矩陣的每一列) 計算任何兩個子集群之間的最大距離。

由於階層式分群的性質,在許多情況下,這只會是合併形成目前集群的兩個子集群之間的距離,也就是 Z[:,2]。

然而,對於非單調集群分配,例如 scipy.cluster.hierarchy.median 分群,情況並非總是如此:可能會有集群形成,其中合併的兩個集群之間的距離小於其子集群之間的距離。

我們可以在範例中看到這一點

>>> 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]]
>>> Z = median(pdist(X))
>>> Z
array([[ 0.        ,  1.        ,  1.        ,  2.        ],
       [ 3.        ,  4.        ,  1.        ,  2.        ],
       [ 9.        , 10.        ,  1.        ,  2.        ],
       [ 6.        ,  7.        ,  1.        ,  2.        ],
       [ 2.        , 12.        ,  1.11803399,  3.        ],
       [ 5.        , 13.        ,  1.11803399,  3.        ],
       [ 8.        , 15.        ,  1.11803399,  3.        ],
       [11.        , 14.        ,  1.11803399,  3.        ],
       [18.        , 19.        ,  3.        ,  6.        ],
       [16.        , 17.        ,  3.5       ,  6.        ],
       [20.        , 21.        ,  3.25      , 12.        ]])
>>> maxdists(Z)
array([1.        , 1.        , 1.        , 1.        , 1.11803399,
       1.11803399, 1.11803399, 1.11803399, 3.        , 3.5       ,
       3.5       ])

請注意,雖然在建立最後一個集群時合併的兩個集群之間的距離是 3.25,但有兩個子集群 (集群 16 和 17) 它們之間的距離更大 (3.5)。因此,scipy.cluster.hierarchy.maxdists 在這種情況下傳回 3.5。