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]=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)