当前位置: 首页>>代码示例>>用法及示例精选>>正文


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='b')

将分层聚类绘制为树状图。

树状图通过在非单例群集及其子级之间绘制一条U-shaped链接来说明每个群集的组成方式。 U-link的顶部指示群集合并。 U-link的两条腿指示要合并的集群。 U-link的两条腿的长度表示子群集之间的距离。它也是两个子类中原始观测值之间的距离。

参数:

Zndarray

链接矩阵编码分层聚类以呈现为树状图。看到linkage函数以获取有关格式的更多信息Z

pint, 可选参数

p的参数truncate_mode

truncate_modestr, 可选参数

当从中得出链接的原始观察矩阵很大时,树状图可能很难读取。截断用于冷凝树状图。有几种模式:

None

不执行截断(默认)。注意:'none'是的别名None为了向后兼容而保留。

'lastp'

最后p链接中形成的非单簇是链接中唯一的非叶节点。它们对应于行Z[n-p-2:end]Z。所有其他非单例群集都收缩到叶节点中。

'level'

不超过p显示树状图树的级别。 “level”包含所有具有p从上一次合并开始合并。

注意:'mtica'是的别名'level'为了向后兼容而保留。

color_thresholddouble, 可选参数

为简洁起见,让成为color_threshold。为群集节点下的所有后代链接着色如果是相同的颜色是低于切割阈值的第一个节点。连接距离大于或等于阈值的节点的所有链接都显示为蓝色。如果小于或等于零,所有节点都染成蓝色。如果color_threshold为None或‘default’,对应于MATLAB™行为,阈值设置为0.7*max(Z[:,2])

get_leavesbool, 可选参数

包括清单R['leaves']=H在结果字典中。对于每个H[i] == j,群集节点j出现在适当位置i在叶子的从左到右遍历

orientationstr, 可选参数

树状图的绘制方向,可以是以下任意字符串:

'top'

在顶部绘制根,并绘制向下的后代链接。 (默认)。

'bottom'

在底部绘制根,并绘制向上的后代链接。

'left'

在左边绘制根,在右边绘制后代链接。

'right'

在右边绘制根,在左边绘制后代链接。

labelsndarray, 可选参数

默认情况下labels为None,因此原始观测值的索引用于标记叶节点。否则,这是一个大小的列表(或元组)。的labels[i]值是要放在叶节点只有在它对应于原始观测值而不是非单一聚类的情况下。

count_sortstr 或 bool, 可选参数

对于每个节点n,此参数确定了绘制n的两个后代链接的顺序(从左到右)(可以是以下任何值):

False

什么都没做。

'ascending'或者True

首先绘制簇中原始对象最少的子项。

'descending'

首先绘制其簇中原始对象数最大的子项。

注意distance_sortcount_sort不能都为真。

distance_sortstr 或 bool, 可选参数

对于每个节点n,此参数确定了绘制n的两个后代链接的顺序(从左到右)(可以是以下任何值):

False

什么都没做。

'ascending'或者True

首先绘制在其直接后代之间具有最小距离的孩子。

'descending'

首先绘制其直接后代之间具有最大距离的孩子。

注意distance_sortcount_sort不能都为真。

show_leaf_countsbool, 可选参数

当为True时,叶节点代表原始观测值在括号中标有观测值的数量。

no_plotbool, 可选参数

为True时,不执行最终渲染。如果仅需要为渲染计算的数据结构,或者如果matplotlib不可用,则这很有用。

no_labelsbool, 可选参数

设置为True时,在树状图的渲染中,没有标签出现在叶节点旁边。

leaf_rotationdouble, 可选参数

指定旋转叶子标签的角度(以度为单位)。如果未指定,则旋转基于树状图中的节点数(默认为0)。

leaf_font_sizeint, 可选参数

指定叶子标签的字体大小(以磅为单位)。未指定时,大小基于树状图中的节点数。

leaf_label_funclambda 或 function, 可选参数

当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)
show_contractedbool, 可选参数

当为True时,收缩成叶节点的非单节点的高度沿着连接该叶节点的链接绘制为十字形。这仅在使用截断时才真正有用(请参阅truncate_mode参数)。

link_color_funccallable, 可选参数

如果给出了link_color_function,则调用每个U-shaped链接所对应的每个非单身ID来调用link_color_function。该函数应返回颜色以绘制链接,编码为matplotlib颜色字符串代码。例如:

dendrogram(Z, link_color_func=lambda k: colors[k])

为每个未截断的非单节点下面的直接链接着色k使用colors[k]

axmatplotlib Axes instance, 可选参数

如果None和no_plot不为True,则将在当前轴上绘制树状图。否则,如果no_plot不为True,则将在给定的位置绘制树状图Axes实例。如果树状图是更复杂图形的一部分,则这很有用。

above_threshold_colorstr, 可选参数

该matplotlib颜色字符串设置color_threshold上方链接的颜色。默认值为‘b’。

返回值:

R字典

计算以渲染树状图的数据结构字典。它具有以下键:

'color_list'

颜色名称列表。第k个元素代表第k个链接的颜色。

'icoord''dcoord'

它们每个都是列表列表。让icoord = [I1, I2, ..., Ip]其中Ik = [xk1, xk2, xk3, xk4]dcoord = [D1, D2, ..., Dp]其中Dk = [yk1, yk2, yk3, yk4],则绘制的第k个链接为(xk1, yk1)--(xk2, yk2)--(xk3, yk3)--(xk4, yk4)

'ivl'

对应于叶节点的标签列表。

'leaves'

对于每个我H[i] == j,群集节点j出现在适当位置i在叶子的从左到右遍历。如果j小于ni第叶节点对应于原始观察值。否则,它对应于非单例群集。

注意:

预计距离Z[:,2]是单调的,否则在树状图中会出现交叉。

例子:

>>> 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()
../_images/scipy-cluster-hierarchy-dendrogram-1_00.png
../_images/scipy-cluster-hierarchy-dendrogram-1_01.png

源码:

scipy.cluster.hierarchy.dendrogram的API实现见:[源代码]

相关用法

注:本文由纯净天空筛选整理自 scipy.cluster.hierarchy.dendrogram。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。