栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

hierarchy层次聚类绘图与展平(python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hierarchy层次聚类绘图与展平(python)

hierarchy是一种常用的聚类方法,可以自顶向下无限二分,从而得到不同层次的聚类结果。Python实现一般使用以下函数,其输出为一个n行4列的矩阵,表示层次聚类后的树状图。

tree = scipy.cluster.hierarchy.linkage(arr,'ward')

输出示例如下,前两列代表每一步合并的两个簇,第三列为簇间距离,第四列表示合并后新簇所包含的点数量。

>>> tree
array([[ 0.        ,  1.        ,  1.        ,  2.        ],
       [ 3.        ,  4.        ,  1.        ,  2.        ],
       [ 6.        ,  7.        ,  1.        ,  2.        ],
       [ 9.        , 10.        ,  1.        ,  2.        ],
       [ 2.        , 12.        ,  1.29099445,  3.        ],
       [ 5.        , 13.        ,  1.29099445,  3.        ],
       [ 8.        , 14.        ,  1.29099445,  3.        ],
       [11.        , 15.        ,  1.29099445,  3.        ],
       [16.        , 17.        ,  5.77350269,  6.        ],
       [18.        , 19.        ,  5.77350269,  6.        ],
       [20.        , 21.        ,  8.16496581, 12.        ]])

这种输出结果很方便绘制树形的可视化聚类图,例如使用dendrogram()函数:

dendrogram(tree)
plt.show()

注意dendrogram()绘制的时候调用了matplotlib库,因此在头文件处设置backend是没用的,需要在调用的函数内部设置或者查看backend,函数如下:

matplotlib.use('TkAgg')
dendgrotam(tree)
print(matplotlib.get_backend())

如果要得到不同层次确切的聚类结果需使用fcluser()函数:

result = fcluster(tree,t=3,criterion='distance')

t为形成簇时的threshold,可以控制生成簇的层次与数量。函数输出为每个样本对应簇类别所组成的列表,最大值即为簇数。结合dict.keys()与dict.values()的对应关系能够很方便地找到聚类前后的样本类别对应关系。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号