文章目录

入手参数

入手

dendrogram是scipy提供的聚类树形图绘制函数,其使用方法大致如下

from scipy.cluster.hierarchy import dendrogram, linkage

from matplotlib import pyplot as plt

Y = [[i] for i in [2, 8, 0, 4, 1, 9, 9, 0]]

Z = linkage(Y, 'single')

dendrogram(Z)

plt.show()

其效果如图所示

很明显

2

,

5

,

1

,

0

,

3

,

4

2,5,1,0,3,4

2,5,1,0,3,4并不是

Y

Y

Y中的数据,而应该理解为

Y

Y

Y中数据类别的编号,记作

X

X

X

Y28041990X01234567

下面逐条解析聚类图

2

2

2和

7

7

7对应

0

0

0和

0

0

0,二者相差0,并且组成一个新的类,编号为8。

5

5

5和

6

6

6对应

9

9

9和

9

9

9,二者相差0,组成新类,编号为9。

0

0

0和

4

4

4对应

2

2

2和

3

3

3,二者相差1,组成新类,编号为10。

3

3

3和

8

8

8对应

4

4

4和

{

2

:

0

,

7

:

0

}

\{2:0,7:0\}

{2:0,7:0},距离为2,组成新类,编号为11。……以此类推

这个图与矩阵

Z

Z

Z有着一一对应的关系,下面以

Z

i

j

Z_{ij}

Zij​表示矩阵

Z

Z

Z的第

i

i

i行第

j

j

j列,列表如下

i

i

i

Z

i

0

Z_{i0}

Zi0​

Z

i

1

Z_{i1}

Zi1​

Z

i

2

Z_{i2}

Zi2​

Z

i

3

Z_{i3}

Zi3​类别027028156029204121038101411419131253112513612134814

至此便明白了聚类图以及聚类矩阵的含义。

参数

dendrogram函数的完整参数如下

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

各参数含义如下

Z 连接矩阵p 调节truncate_mode的参数truncate_mode 当Z特别大的时候,聚类图会变得很难看,本参数的作用就是让聚类图适当稀疏一些,有一下几个选项

None 不做任何优化'lastp' 最后面的p个簇显示为一个叶节点。'level' 只现实到第p级的聚类簇。 color_threshold 设置颜色阈值get_leaves 为True时,在结果字典中包含 R[‘leaves’]=H 的列表。orientation 图的方向,可选参数包括:'top', 'botton', 'left', 'right'labels 默认为None,则直接用节点号作为标签;否则可输入一个列表,用于映射标签。count_sort 对于节点n,其两个下级连接的左右次序由本参数决定,可选下列参数

False 什么也不做'ascending'或者True 先画小值子节点'descending' 先画大值子节点 distance_sort 和count_sort功能相似,且二者不能同时为True,可选参数如下

False 什么也不做'ascending'或者True 先画距离更小的子节点'descending' 先画距离更大的子节点 show_leaf_counts 当为True时,叶节点在括号中标注其所包含的观测数据的数量。no_plot 为True时,不对图形进行渲染,此时无法调用plt.show()no_labels 设为True则不显示标签leaf_rotation 标签文字旋转角度leaf_font_size 标签的字体尺寸leaf_label_func 用于调整标签的函数show_contracted 当为True时,进入截断模式,即对叶节点进行缩进,变成十字。link_color_func 用于调整连接线颜色的函数ax 绘图的坐标轴,用matplotlib的都懂,不用的也没必要知道above_threshold_color 绘图颜色字符串,默认为C0

显示层级

dendrogram中的参数实在是太多了,没法一一演示,下面演示一下参数

p

p

p对聚类图像的调控

import numpy as np

import matplotlib.pyplot as plt

ys = np.random.randint(200, size=[50,1])

Z = linkage(ys, 'single')

fig = plt.figure()

ax = fig.add_subplot(211, title='None')

dn = dendrogram(Z, ax=ax)

for i,L in enumerate([1,2,4], 4):

ax = fig.add_subplot(2,3,i,title=f"level={L}")

dn = dendrogram(Z, p=L, truncate_mode='level', ax=ax, show_contracted=True)

plt.show()

结果如下

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: