Lab10聚类分析1距离

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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个变量进行聚类分析(选择聚类方法,选择聚类数目,评价聚类效果).

相关文档
最新文档