层次聚类基础

Python 中的聚类分析

Shaumik Daityari

Business Analyst

用 linkage 创建距离矩阵

scipy.cluster.hierarchy.linkage(observations, 
                                method='single', 
                                metric='euclidean', 
                                optimal_ordering=False
)
  • method:计算簇间接近度的方式
  • metric:距离度量
  • optimal_ordering:数据点排序
Python 中的聚类分析

应使用哪种方法?

  • 'single':基于最近的两个对象
  • 'complete':基于最远的两个对象
  • 'average':基于所有对象的算术平均
  • 'centroid':基于所有对象的几何中心
  • 'median':基于所有对象的中位数
  • 'ward':基于平方和最小化
Python 中的聚类分析

用 fcluster 生成簇标签

scipy.cluster.hierarchy.fcluster(distance_matrix, 
                                 num_clusters,
                                 criterion
)
  • distance_matrixlinkage() 的输出
  • num_clusters:簇的数量
  • criterion:形成簇的阈值判定方式
Python 中的聚类分析

Ward 法的层次聚类

Python 中的聚类分析

单链接法的层次聚类

Python 中的聚类分析

完全连接法的层次聚类

Python 中的聚类分析

方法选择的要点

  • 不存在放之四海而皆准的方法
  • 需仔细理解数据分布
Python 中的聚类分析

让我们做些练习

Python 中的聚类分析

Preparing Video For Download...