scipy.cluster.hierarchy.

to_tree#

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

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

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

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

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

参数:
Zndarray

格式正确的连接矩阵(请参阅 linkage 函数文档)。

rdbool,可选

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

返回:
treeClusterNode 或元组 (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