scipy.cluster.hierarchy.

leaders#

scipy.cluster.hierarchy.leaders(Z, T)[source]#

返回分层聚类中的根节点。

返回分层聚类中的根节点,该根节点对应于平坦集群分配向量 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 是 ID 为 M[j] 的扁平群集的领导者。如果 i < n,则 i 对应于原始观测,否则它对应于非单例群集。

Mndarray

将领导者的联结节点 ID 存储为 k 元素一维数组,其中 k 是在 T 中发现的扁平群集数量。这允许扁平群集 ID 的集合成为任何任意的 k 整数集合。

例如:如果 L[3]=2 并且 M[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)