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 元素 1-D 数组,其中 k 是在 T 中找到的扁平聚类的数量。

L[j]=i 是扁平聚类的领导者的链接聚类节点 ID,ID 为 M[j]。如果 i < n,则 i 对应于原始观察值,否则它对应于非单例聚类。

Mndarray

领导者链接节点 ID 存储为 k 元素 1-D 数组,其中 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)