scipy.cluster.hierarchy.leaders¶
- scipy.cluster.hierarchy.leaders(Z, T)[源代码]¶
返回分层群集中的根节点。
返回与平面聚类分配向量定义的切割相对应的分层聚类中的根节点
T
。请参阅fcluster
函数获取有关格式的详细信息T
。对于每个平面群集 \(j\) 的 \(k\) 在n大小的平面群集分配矢量中表示的平面群集
T
,此函数查找最低的群集节点 \(i\) 在链接树Z中,使得:叶子孙仅属于平坦簇j(即,
T[p]==j
为了所有人 \(p\) 在……里面 \(S(i)\) ,在哪里 \(S(i)\) 是具有群集节点的后代叶节点的叶ID集 \(i\) )不存在不是子孙的叶子 \(i\) 这也属于群集 \(j\) (即,
T[q]!=j
为了所有人 \(q\) 不在 \(S(i)\) )。如果违反了这个条件,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]=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指向中的12个数据点
X
,而索引12-22指向11行Z
)scipy.cluster.hierarchy.leaders
中的平面群集的索引。T
:>>> M array([1, 2, 3, 4], dtype=int32)