scipy.cluster.hierarchy.

领导者#

scipy.cluster.hierarchy.leaders(Z, T)[源代码][源代码]#

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

返回层次聚类中对应于由平面聚类分配向量 T 定义的切割的根节点。有关 T 格式的更多信息,请参见 fcluster 函数。

对于n大小的平面聚类分配向量``T``中表示的每个平面聚类 \(j\) 及其 \(k\) 个平面聚类,此函数在链接树Z中找到最低的聚类节点 \(i\),使得:

  • 叶后代仅属于平面簇 j(即,对于所有 \(p\)\(S(i)\) 中,T[p]==j,其中 \(S(i)\) 是具有簇节点 \(i\) 的叶后代节点的叶 ID 集合)

  • 不存在一个叶子节点,它不是 \(i\) 的后代,同时也属于簇 \(j\) (即,对于所有不在 \(S(i)\) 中的 \(q\)T[q]!=j)。如果违反了这个条件,T 不是一个有效的簇分配向量,并且会抛出一个异常。

参数:
Zndarray

编码为矩阵的层次聚类。更多信息请参见 linkage

Tndarray

扁平聚类分配向量。

返回:
Lndarray

领导者链接节点ID存储为一个k元素的一维数组,其中 kT 中找到的平面簇的数量。

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

Mndarray

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