本文简要介绍 python 语言中 scipy.cluster.hierarchy.dendrogram
的用法。
用法:
scipy.cluster.hierarchy.dendrogram(Z, p=30, truncate_mode=None, color_threshold=None, get_leaves=True, orientation='top', labels=None, count_sort=False, distance_sort=False, show_leaf_counts=True, no_plot=False, no_labels=False, leaf_font_size=None, leaf_rotation=None, leaf_label_func=None, show_contracted=False, link_color_func=None, ax=None, above_threshold_color='C0')#
将层次聚类绘制为树状图。
树状图通过在非单例集群及其子集群之间绘制U-shaped 链接来说明每个集群是如何组成的。 U-link 的顶部表示集群合并。 U-link 的两条腿指示合并了哪些集群。 U-link的两条腿的长度代表子簇之间的距离。它也是两个子集群中原始观测值之间的共生距离。
- Z: ndarray
将层次聚类编码为树状图的链接矩阵。有关
Z
格式的更多信息,请参见linkage
函数。- p: 整数,可选
truncate_mode
的p
参数。- truncate_mode: str,可选
当导出链接的原始观察矩阵很大时,树状图可能难以阅读。截断用于压缩树状图。有几种模式:
None
不执行截断(默认)。注意:
'none'
是None
的别名,保留它是为了向后兼容。'lastp'
链接中最后形成的
p
非单子簇是链接中唯一的非叶子节点;它们对应于Z
中的Z[n-p-2:end]
行。所有其他非单例集群都收缩为叶节点。'level'
不会显示超过
p
级别的树状图树。 “level” 包括从最终合并中合并p
的所有节点。注意:
'mtica'
是'level'
的别名,保留它是为了向后兼容。
- color_threshold: 双,可选
为简洁起见,让
color_threshold
。如果 是低于切割阈值 的第一个节点,则将集群节点 下的所有后代链接着色为相同颜色。连接距离大于或等于阈值的节点的所有链接都使用默认 matplotlib 颜色'C0'
着色。如果 小于或等于零,则所有节点都着色为'C0'
。如果color_threshold
为 None 或 ‘default’,对应于 MATLAB(TM) 行为,则阈值设置为0.7*max(Z[:,2])
。 为- get_leaves: 布尔型,可选
在结果字典中包含一个列表
R['leaves']=H
。对于每个 、H[i] == j
,集群节点j
出现在叶子从左到右遍历的位置i
中,其中 和 。- orientation: str,可选
绘制树状图的方向,可以是以下任意字符串:
'top'
在顶部绘制根,并向下绘制后代链接。 (默认)。
'bottom'
在底部绘制根,并向上绘制后代链接。
'left'
在左侧绘制根,并向右绘制后代链接。
'right'
在右侧绘制根,并在左侧绘制后代链接。
- labels: ndarray,可选
默认情况下,
labels
为 None 因此原始观察的索引用于标记叶节点。否则,这是一个 大小的序列,带有n == Z.shape[0] + 1
。labels[i]
值是放置在第 th 叶节点下的文本,前提是它对应于原始观察而不是非单例集群。- count_sort: str 或 bool,可选
对于每个节点 n,绘制 n 的两个后代链接的顺序(视觉上,从左到右)由该参数确定,该参数可以是以下任何值:
False
什么都没做。
'ascending'
或True
首先绘制其集群中原始对象数量最少的孩子。
'descending'
首先绘制在其集群中具有最大数量的原始对象的孩子。
请注意,
distance_sort
和count_sort
不能同时为 True。- distance_sort: str 或 bool,可选
对于每个节点 n,绘制 n 的两个后代链接的顺序(视觉上,从左到右)由该参数确定,该参数可以是以下任何值:
False
什么都没做。
'ascending'
或True
首先绘制其直接后代之间距离最小的孩子。
'descending'
首先绘制其直接后代之间距离最大的孩子。
注意
distance_sort
和count_sort
不能同时为 True。- show_leaf_counts: 布尔型,可选
当为 True 时,表示 原始观测值的叶节点用括号中包含的观测值数量进行标记。
- no_plot: 布尔型,可选
如果为 True,则不执行最终渲染。如果只需要为渲染计算的数据结构或 matplotlib 不可用,这很有用。
- no_labels: 布尔型,可选
当为 True 时,在树状图的渲染中,叶节点旁边不会出现任何标签。
- leaf_rotation: 双,可选
指定旋转叶子标签的角度(以度为单位)。未指定时,旋转基于树状图中的节点数(默认为 0)。
- leaf_font_size: 整数,可选
指定叶标签的字体大小(以磅为单位)。未指定时,大小基于树状图中的节点数。
- leaf_label_func: lambda 或函数,可选
当
leaf_label_func
是可调用函数时,对于每个具有集群索引 的叶子。该函数应返回带有叶子标签的字符串。索引 对应于原始观测值,而索引 对应于非单例集群。
例如,用节点 id 标记单例,用 id、计数和不一致系数标记非单例,只需执行以下操作:
# First define the leaf label function. def llf(id): if id < n: return str(id) else: return '[%d %d %1.2f]' % (id, count, R[n-id,3]) # The text for the leaf nodes is going to be big so force # a rotation of 90 degrees. dendrogram(Z, leaf_label_func=llf, leaf_rotation=90) # leaf_label_func can also be used together with ``truncate_mode`` parameter, # in which case you will get your leaves labeled after truncation: dendrogram(Z, leaf_label_func=llf, leaf_rotation=90, truncate_mode='level', p=2)
- show_contracted: 布尔型,可选
当为 True 时,收缩为叶节点的非单例节点的高度被绘制为沿着连接该叶节点的链接的十字。这仅在使用截断时才有用(请参阅
truncate_mode
参数)。- link_color_func: 可调用的,可选的
如果给定,则调用 link_color_function,每个非单例 id 对应于它将绘制的每个 U-shaped 链接。该函数应返回绘制链接的颜色,编码为 matplotlib 颜色字符串代码。例如:
dendrogram(Z, link_color_func=lambda k: colors[k])
使用
colors[k]
为每个未截断的非单例节点k
下的直接链接着色。- ax: matplotlib 轴实例,可选
如果没有并且no_plot不是 True,树状图将绘制在当前轴上。否则如果no_plot不是 True,树状图将绘制在给定的
Axes
实例。如果树状图是更复杂图形的一部分,这将很有用。- above_threshold_color: str,可选
这个 matplotlib 颜色字符串设置 color_threshold 上方链接的颜色。默认值为
'C0'
。
- R: dict
为呈现树状图而计算的数据结构字典。它有以下键:
'color_list'
颜色名称列表。第 k 个元素表示第 k 个链接的颜色。
'icoord'
和'dcoord'
它们中的每一个都是列表的列表。让
icoord = [I1, I2, ..., Ip]
whereIk = [xk1, xk2, xk3, xk4]
和dcoord = [D1, D2, ..., Dp]
whereDk = [yk1, yk2, yk3, yk4]
,那么绘制的第 k 个链接是(xk1, yk1)
-(xk2, yk2)
-(xk3, yk3)
-(xk4, yk4)
。'ivl'
与叶节点对应的标签列表。
'leaves'
对于每个 i,
H[i] == j
,集群节点j
出现在叶子从左到右遍历的位置i
中,其中 和 。如果j
小于n
,则第i
叶节点对应于原始观察。否则,它对应于非单例集群。'leaves_color_list'
颜色名称列表。第 k 个元素表示第 k 个叶子的颜色。
参数 ::
返回 ::
注意:
预计
Z[:,2]
中的距离是单调的,否则在树状图中会出现交叉。例子:
>>> import numpy as np >>> from scipy.cluster import hierarchy >>> import matplotlib.pyplot as plt
一个非常基本的例子:
>>> ytdist = np.array([662., 877., 255., 412., 996., 295., 468., 268., ... 400., 754., 564., 138., 219., 869., 669.]) >>> Z = hierarchy.linkage(ytdist, 'single') >>> plt.figure() >>> dn = hierarchy.dendrogram(Z)
现在,在给定的轴上绘图,改进配色方案并使用垂直和水平方向:
>>> hierarchy.set_link_color_palette(['m', 'c', 'y', 'k']) >>> fig, axes = plt.subplots(1, 2, figsize=(8, 3)) >>> dn1 = hierarchy.dendrogram(Z, ax=axes[0], above_threshold_color='y', ... orientation='top') >>> dn2 = hierarchy.dendrogram(Z, ax=axes[1], ... above_threshold_color='#bcbddc', ... orientation='right') >>> hierarchy.set_link_color_palette(None) # reset to default after use >>> plt.show()
相关用法
- Python SciPy hierarchy.ward用法及代码示例
- Python SciPy hierarchy.maxRstat用法及代码示例
- Python SciPy hierarchy.set_link_color_palette用法及代码示例
- Python SciPy hierarchy.fclusterdata用法及代码示例
- Python SciPy hierarchy.median用法及代码示例
- Python SciPy hierarchy.DisjointSet用法及代码示例
- Python SciPy hierarchy.correspond用法及代码示例
- Python SciPy hierarchy.is_isomorphic用法及代码示例
- Python SciPy hierarchy.optimal_leaf_ordering用法及代码示例
- Python SciPy hierarchy.maxinconsts用法及代码示例
- Python SciPy hierarchy.cut_tree用法及代码示例
- Python SciPy hierarchy.fcluster用法及代码示例
- Python SciPy hierarchy.to_tree用法及代码示例
- Python SciPy hierarchy.average用法及代码示例
- Python SciPy hierarchy.num_obs_linkage用法及代码示例
- Python SciPy hierarchy.inconsistent用法及代码示例
- Python SciPy hierarchy.complete用法及代码示例
- Python SciPy hierarchy.linkage用法及代码示例
- Python SciPy hierarchy.maxdists用法及代码示例
- Python SciPy hierarchy.is_valid_im用法及代码示例
- Python SciPy hierarchy.centroid用法及代码示例
- Python SciPy hierarchy.single用法及代码示例
- Python SciPy hierarchy.is_monotonic用法及代码示例
- Python SciPy hierarchy.cophenet用法及代码示例
- Python SciPy hierarchy.leaves_list用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.cluster.hierarchy.dendrogram。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。