python调用包进行层次聚类分析

聚类是一种非常重要的无监督学习方法,聚类分析发展至今已经出现了多种不同的算法,层次聚类是其中的典型代表,python作为机器学习编程的有力工具,对多种聚类方法进行了集成,本文主要介绍利用python中集成的包进行层次聚类。
层次聚类首先需要选定一种距离度量,基于这种度量获取所有样本的距离矩阵。初始时先把每个点作为一个单独的簇,然后要再选定一种衡量簇与簇之间距离的度量,基于这种度量合并两个最近的簇,合并之后更新样本的距离矩阵。对这个过程进行循环操作,直到所有点被合并为一个簇为止。
这种方法的有点在于不需要提前指定聚类数量K,可以根据最终的计算结果,结合对聚类树状图的观察选取合理的结果,但随之而来的问题是计算量的增大。
python中实现方式如下:

import scipy.cluster.hierarchy as sch  
import seaborn as sns
import matplotlib.pylab as plt                                                #导入需要的包
Z = sch.linkage(matrix, method='average', metric='euclidean')                 #实现聚类的关键函数,其中matrix为数据阵,metric为计算两点间距离的方式,method为计算簇间距离的方式
label = sch.cut_tree(Z, height)                                               #在聚类树状图的特定位置截取,可以获得不同的聚类结果,返回各点的类别标签
sch.dendrogram(Z)                                                             #绘制聚类树状图
plt.savefig('plot_dendrogram.png')                                            #将聚类树状图保存为图片,运行程序即可自动显示
sns.clustermap(consen, method='average', metric='euclidean',cmap='RdYlBu_r')  #绘制聚类热图,参数cmap代表不同的颜色显示模式
plt.savefig('plot_clustermap.png')                                            #将热图保存为图片

利用python中的随机数函数生成一些中心不同的正太分布点,使用以上代码进行层次聚类,可以得到以下聚类树状图和热图:
聚类树状图聚类热图在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38402294/article/details/88431382
今日推荐