Lab10聚类分析1距离
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lab10:聚类分析
1.内容:练习判别与分类方法的使用
2.目的:理解层次聚类,K-means以及谱聚类方法的原理,熟练掌握其使用
3.作业提交:完成后面的作业,现场演示给助教并解释结果.
1距离
所有的聚类方法都是基于距离的,因此距离的选择会直接影响聚类的结果.
library(HSAUR)
data(pottery)
?pottery
##如果数据需要中心化和标准化,则
#scale(t(y));yscaled<-t(scale(t(y)));apply(yscaled,1,sd)
#计算距离
d<-dist(y,method="euclidean")
#矩阵y的行为观测,列为变量
#c<-cor(t(y),method="spearman");d<-as.dist(1-c);
#欲得到基于相关的距离,首先需要计算相关系数,然后再将其转为距离.
#注意cor函数计算列之间的相关系数,因此这里需要转置
#使用层次聚类方法
hr<-hclust(d,method="complete",members=NULL)
plot(hr,hang=-1)
练习1.使用不同的距离方法,使用Rand index研究层次聚类方法在不同距离以及linkage下的结果差异.
2聚类方法
聚类是基于相似度原理,因此不同的聚类方法的结果可能会有差异.其中,确定聚类数目是必须的且比较困难的问题.
#使用层次聚类方法
hr<-hclust(d,method="complete",members=NULL)
hc<-cutree(hr,k=3)
plot(hr)
rect.hclust(hr,k=3)
clusplot(y,hc,color=TRUE,shade=TRUE,labels=2,lines=0)
#使用K-means
hk<-kmeans(d,centers=3,iter.max=100,nstart=10)
library(cluster)
clusplot(y,hk$cluster,color=TRUE,shade=TRUE,labels=2,lines=0)
#使用k-medoids
hp<-pam(d,k=3,diss=T)
clusplot(y,hp$clustering,color=TRUE,shade=TRUE,labels=2,lines=0)
#使用谱聚类方法
library(kernlab)
hs<-specc(as.matrix(y),centers=3)
clusplot(y,hs,color=TRUE,shade=TRUE,labels=2,lines=0)
#对比这些结果,会得到什么?
练习2.使用silihoutte,CH,Gap统计量等方法选择合适的聚类数目.
前面我们都是对样本点进行聚类,下面考察对变量进行聚类.
练习3.使用基于相关系数的聚类,对pottery数据的9个变量进行聚类分析(选择聚类方法,选择聚类数目,评价聚类效果).