python层次聚类图怎么看性别_层次聚类分析 – 不愿透露性别的某名宿的个人空间 – OSCHINA – 中文开源技术交流社区…

  • Post author:
  • Post category:python


层次聚类中,起初每一个实例或观测值属于一类,聚类就是每一次把两类聚成新的一类,直到所有的类聚成单个类为止,算法如下

a、定义每个观测值(行或单元)为一类

b、计算每类和其他各类的距离

c、把距离最短的两类合并成一类,这样类的个数就减少一个

d、重复步骤(b)和(c)。直到包含所有观测值的类合并成单个的类为止

在层次聚类中,主要的区别是它们对类的定义不同(步骤(b)),五种常见的聚类方法的定义和其中两类之间的距离定义

聚类方法

两类之间的距离定义

单联动

一个类中的点和另一个类中的点的最小距离

全联动

一个类中的点和另一个类中的点的最大距离

平均联动

一个类中的点与另一个类中的点的平均距离(也称作UPGMA,非加权对组平均)

质心

两类中质心(变量均值向量)之间的距离。对单个的观测值来说,质心就是变量的值

Ward法

两个类之间所有变量的方差分析的平方和

单联动聚类方法:倾向于发现细长的、雪茄型的类,它也通常展示一种链式的现象,即不相似的观测值分到一类中,因为它们和它们的中间值很相像

全联动聚类方法:倾向与发现大致相等的直径紧凑类,对异常值很敏感

平均联动:提供了以上两种方法的折中,相对来说,它不像链式,而且对异常值没有那么敏感,倾向与把方差小的类聚合

Ward法:倾向与把少量观测值的类聚合到一起,并且倾向与产生与观测值个数大致相等的类,它对异常值也是敏感的

质心法:一种很受欢迎的方法,因为其中类距离的定义比较简单,易于理解,相比其他方法,它对异常值不是很敏感,但是它可能不如平均联动法或Ward方法表现的很好

hclust()

层次聚类的方法可用 hclust()函数来实现,格式是

hclust(d ,method=)

d:是通过 dist()函数产生的矩阵

method:方法有“single”单联动,“complete”全联动,“average”平均联动,“centroid”质心,“ward ”Ward法

平均联动聚类

查看flexclust包中的营养数据集

> data(nutrient,package = “flexclust”) #导入数据

> row.names(nutrient)

> nutrient.scaled

> d

> fit.average

> plot(fit.average,hang=-1, cex=0.8 ,main = “Average Linkage Clustering”) #hang = -1 设置标签的位置:将观测值的标签移动到水平轴下面(让它们挂在0下面)

a、高度刻度代表了该高度类之间合并的判定值,对于平均联动来说,标准是一类中的点和其他类中的点的距离平均值

b、图提供了27种了食物之间的相似性/异质性的层次分析视图,如tuna canned 和chicken canned相似,但是都和 clams canned有很大的不同

如果最终目标是这些食品分配到类(希望有意义的)较少,那么需要额外的分析选择聚类的适当个数



版权声明:本文为weixin_39779032原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。