scipy.cluster.hierarchy.

leaders#

scipy.cluster.hierarchy.leaders(Z, T)[原始碼]#

傳回階層式分群中的根節點。

傳回階層式分群中的根節點,對應於由平坦集群分配向量 T 定義的切割。 有關 T 格式的更多資訊,請參閱 fcluster 函數。

對於大小為 n 的平坦集群分配向量 T 中表示的 \(k\) 個平坦集群中的每個平坦集群 \(j\),此函數會找到連結樹 Z 中的最低集群節點 \(i\),使得

  • 葉子後代僅屬於平坦集群 j(即,對於 \(S(i)\) 中的所有 \(p\)T[p]==j,其中 \(S(i)\) 是具有集群節點 \(i\) 的後代葉節點的葉子 ID 集)

  • 不存在非後代的葉子,其與 \(i\) 也屬於集群 \(j\)(即,對於 \(S(i)\) 之外的所有 \(q\)T[q]!=j)。 如果違反此條件,則 T 不是有效的集群分配向量,並且將拋出例外。

參數:
Zndarray

編碼為矩陣的階層式分群。 有關更多資訊,請參閱 linkage

Tndarray

平坦集群分配向量。

返回:
Lndarray

領導者連結節點 ID,儲存為 k 元素一維陣列,其中 k 是在 T 中找到的平坦集群數量。

L[j]=i 是平坦集群的領導者的連結集群節點 ID,其 ID 為 M[j]。 如果 i < n,則 i 對應於原始觀測值,否則它對應於非單例集群。

Mndarray

領導者連結節點 ID,儲存為 k 元素一維陣列,其中 k 是在 T 中找到的平坦集群數量。 這允許平坦集群 ID 的集合可以是 k 個整數的任意集合。

例如:如果 L[3]=2M[3]=8,則 ID 為 8 的平坦集群的領導者是連結節點 2。

另請參閱

fcluster

用於建立平坦集群分配。

範例

>>> from scipy.cluster.hierarchy import ward, fcluster, leaders
>>> from scipy.spatial.distance import pdist

給定連結矩陣 Z - 在將分群方法應用於資料集 X 之後獲得 - 和平坦集群分配陣列 T

>>> 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 = ward(pdist(X))
>>> Z
array([[ 0.        ,  1.        ,  1.        ,  2.        ],
       [ 3.        ,  4.        ,  1.        ,  2.        ],
       [ 6.        ,  7.        ,  1.        ,  2.        ],
       [ 9.        , 10.        ,  1.        ,  2.        ],
       [ 2.        , 12.        ,  1.29099445,  3.        ],
       [ 5.        , 13.        ,  1.29099445,  3.        ],
       [ 8.        , 14.        ,  1.29099445,  3.        ],
       [11.        , 15.        ,  1.29099445,  3.        ],
       [16.        , 17.        ,  5.77350269,  6.        ],
       [18.        , 19.        ,  5.77350269,  6.        ],
       [20.        , 21.        ,  8.16496581, 12.        ]])
>>> T = fcluster(Z, 3, criterion='distance')
>>> T
array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], dtype=int32)

scipy.cluster.hierarchy.leaders 傳回樹狀圖中作為每個平坦集群領導者的節點索引

>>> L, M = leaders(Z, T)
>>> L
array([16, 17, 18, 19], dtype=int32)

(請記住,索引 0-11 指向 X 中的 12 個資料點,而索引 12-22 指向 Z 的 11 列)

scipy.cluster.hierarchy.leaders 也傳回 T 中平坦集群的索引

>>> M
array([1, 2, 3, 4], dtype=int32)