系统聚类分析(CA)学习笔记
2013年1月25日
聚类分析:Cluster Analysis
在这里重点分析的是系统聚类分析。
聚类分析法是在多元统计分析中研究如何对样品(或指标)进行分类的一种统计方法,它直接比较各事物之间的性质,将性质相近的归为一类,将性质差别较大的归入不同的类。
这些类不是事先给定的,而是根据数据特征而定的。
在一个给定的类里,这些对象在某种意义上倾向于彼此类似,而在不同类里的这些对象倾向于不相似。
聚类分析:系统聚类分析、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法
系统聚类法:先将n个样品各自看成一类,然后规定样品之间的“距离”和类和类之间的距离。
选择距离最近的两类合并成一个新类,计算新类和其他类(各当前类)的距离,再将距离最近的两类合并。
这样每次合并减少一类,直至所有的样品都归成一类为止。
系统聚类法德基本步骤:
1、计算n个样品两两间的距离。
2、构造n个类,每个类只包含一个样品。
3、合并距离最近的两类为一新类。
4、计算新类与各当前类的距离。
5、重复步骤3、4,合并距离最近的两类为新类,直到所有的类并为一类为止。
6、画聚类谱系图。
7、决定类的个数和类。
系统聚类方法:1、最短距离法2、最长距离法3、中间距离法4、重心法5、类平均法6、离差平方和法(Ward法)
聚类分析MATLAB实现:
X=[第一列数据;第二列数据;第三列数据;……]
BX=zscore(X); %标准化数据矩阵
Y=pdist(X,'method') %用欧式距离计算两两之间的距离
缺省时是欧式距离,马氏距离'mahal' 标准欧式距离'SEuclid' 明可夫斯基距离'Minkowski'
D=squareform(Y) %欧式距离矩阵
Z=linkage(Y,'method') %最短距离法
缺省时是最短距离法,欧式距离'single',最长距离法'complete',类平均法'average',重心法'centroid'递增平方和法'ward'
T=cluster(Z,3) 3表示欲分成3类
find(T==3) %第3类集合中的元素
[H,T]=dendrogram(Z) %画聚类图
聚类分析R软件实现:
在excel中点击复制要读取的文件
>data<-read.table("clipboard",header=T,sep='\t')
>data
>(data)<-c("...","...","...")
>d<-dist(scale(data))
>hc1<-hclust(d,"single") #最短距离法
>hc2<-hclust(d,"complete") #最长距离法
>hc3<-hclust(d,"median") #中间距离法
>hc4<-hclust(d,"ward") #Ward法
>opar<-par(mfrow=c(2,2))
>plot(hc1,hang=-1);plot(hc2,hang=-1)
>plot(hc3,hang=-1);plot(hc4,hang=-1)
图1 MatLab软件进行聚类分析后结果
图1 R软件进行聚类分析后结果。