19.5 使用层次合并聚类算法
问题描述
使用聚类的层次来给观察值分组。
解决方案
使用Agglomerative聚类:


讨论
Agglomerative聚类是一个强大的、灵活的层次聚类算法。在Agglomerative聚类中,所有观察值一开始都是一个独立的聚类。接着,满足一定条件的聚类被合并。不断重复这个合并过程,让聚类不断增长,直到达到某个临界点。在scikit-learn中, AgglomerativeClustering使用linkage参数来决定合并策略,使其可以最小化下面的值:
1.合并后的聚类的方差(ward)。
2.两个聚类之间观察值的平均距离(average)。
3.两个聚类之间观察值的最大距离(complete)。
还有两个参数也很有用。第一个是affinity,它决定linkage使用何种距离度量(比如minkowski或者euclidean等)。第二个是n_clusters,它设定了聚类算法试图寻找的聚类的数量。也就是说,直到有n_clusters个聚类时,聚类的合并才结束。
和我们讨论的其他聚类算法一样,可以用labels_方法来查看每个观察值所属的聚类:

[1]编者注:本章中“分组”“分类”“聚类”几个词含义是相同的,其实指的都是cluster。考虑到语言的流畅性和易读性,并未全部统一表述为“聚类”。



本书评论