常用于 1维数据 的自动分组,如下图所示,

层次聚类算法分为两类:自上而下和自下而上。
凝聚层级聚类(HAC)是自下而上的一种聚类算法。HAC首先将每个数据点视为一>个单一的簇,然后计算所有簇之间的距离来合并簇,直到所有的簇聚合成为一个簇为止。
具体步骤:
首先我们将每个数据点视为一个单一的簇,然后选择一个测量两个簇之间距离的度量标准。例如我们使用average linkage作为标准,它将两个簇之间的距离定义为第一个簇中的数据点与第二个簇中的数据点之间的平均距离。
在每次迭代中,我们将两个具有最小average linkage的簇合并成为一个簇。
重复步骤2知道所有的数据点合并成一个簇,然后选择我们需要多少个簇。
层次聚类
优点:
(1)不需要知道有多少个簇
(2)对于距离度量标准的选择并不敏感
缺点:效率低
import scipy.cluster.hierarchy as hcluster
linkage = hcluster.linkage(data, method='single')
# data:训练样本
# method:类距离的计算方式(single:两个类之间最短距离的点的距离、complete:两个类之间最长距离的点的距离、centroid:两个类之间所有点的中点的距离)
import scipy.cluster.hierarchy as hcluster
hcluster.dendrogram(linkage)
#linkage:层次聚类的结果
# dendrogram()方法为我们展示层次聚类得到的层次图
import scipy.cluster.hierarchy as hcluster
scipy.cluster.hierarchy.fcluster(linkage, n, criterion='maxclust')
# linkage:层次聚类的结果
# n:要聚的类数量
# criterion:划分方法,使用maxclust,最大划分法
参考链接:
[1] 聚类算法——层次聚类算法 2018.2