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 < ni 对应于原始观测,否则对应于非单一群集。

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指向中的12个数据点 X ,而索引12-22指向11行 Z )

scipy.cluster.hierarchy.leaders 中的平面群集的索引。 T

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