scipy.cluster.hierarchy.

to_tree#

scipy.cluster.hierarchy.to_tree(Z, rd=False)[源代码][源代码]#

将一个链接矩阵转换为一个易于使用的树对象。

返回对根 ClusterNode 对象的引用(默认情况下)。

每个 ClusterNode 对象都有一个 leftrightdistidcount 属性。left 和 right 属性指向被合并以生成该集群的 ClusterNode 对象。如果两者均为 None,则 ClusterNode 对象是一个叶节点,其 count 必须为 1,其距离无意义但设置为 0。

注意:此功能是为了方便库用户提供的。ClusterNodes 不作为此库中任何函数的输入。

参数:
Zndarray

适当形式的链接矩阵(参见 linkage 函数文档)。

rdbool, 可选

当为 False 时(默认),返回对根 ClusterNode 对象的引用。否则,返回一个元组 (r, d)r 是对根节点的引用,而 d 是一个 ClusterNode 对象的列表 - 每个原始链接矩阵中的条目加上所有聚类步骤的条目。如果一个聚类 ID 小于链接矩阵描述的数据中的样本数 n,那么它对应于一个单例聚类(叶节点)。有关聚类 ID 分配给聚类的更多信息,请参见 linkage

返回:
ClusterNode 或元组 (ClusterNode, ClusterNode 列表)

如果 rd 为 False,则返回 ClusterNode。如果 rd 为 True,则返回长度为 2*n - 1 的列表,其中 n 是样本的数量。有关 rd 的更多详细信息,请参见上面的描述。

示例

>>> import numpy as np
>>> from scipy.cluster import hierarchy
>>> rng = np.random.default_rng()
>>> x = rng.random((5, 2))
>>> Z = hierarchy.linkage(x)
>>> hierarchy.to_tree(Z)
<scipy.cluster.hierarchy.ClusterNode object at ...
>>> rootnode, nodelist = hierarchy.to_tree(Z, rd=True)
>>> rootnode
<scipy.cluster.hierarchy.ClusterNode object at ...
>>> len(nodelist)
9