找回密码
 立即注册
查看: 6237|回复: 1

每R一点:层次聚类分析实例实战-dist、hclust、heatmap等

[复制链接]
发表于 2015-1-6 11:22:43 | 显示全部楼层 |阅读模式
本帖最后由 R语言微信号 于 2015-1-6 11:25 编辑

每R一点:层次聚类分析实例实战-dist、hclust、heatmap等2015-01-06 小R R语言中文网

层次聚类分析实例实战


聚类分析:对样品或指标进行分类的一种分析方法,依据样本和指标已知特性进行分类。本节主要介绍层次聚类分析,一共包括3个部分,每个部分包括一个具体实战例子。

1、常规聚类过程:

一、首先用dist()函数计算变量间距离
dist.r = dist(data, method=" ")
其中method包括6种方法,表示不同的距离测度:"euclidean", "maximum", "manhattan", "canberra", "binary" or "minkowski"。相应的意义自行查找。

二、再用hclust()进行聚类
hc.r = hclust(dist.r, method = “ ”)
其中method包括7种方法,表示聚类的方法:"ward", "single", "complete","average", "mcquitty", "median" or "centroid"。相应的意义自行查找。

三、画图
plot(hc.r, hang = -1,labels=NULL) 或者plot(hc.r, hang = 0.1,labels=F)
hang 等于数值,表示标签与末端树杈之间的距离,
若是负数,则表示末端树杈长度是0,即标签对齐。
labels 表示标签,默认是NULL,表示变量原有名称。labels=F :表示不显示标签。

实例介绍:

特殊情况用法:
当用已知距离矩阵进行聚类时,即变量间的距离已经计算完,只是想用
已知的距离矩阵进行聚类。这时,需将距离矩阵转成dist类型。
然后再执行hclust()聚类和plot()画图。

# mydata作为距离矩阵,且为正方矩阵
mydata<-matrix(1:25,ncol=5);
class(mydata);

# 把mydata变成dist类型
mydist<-as.dist(mydata);
class(mydist);
[1] "dist"

myhc<-hclust(mydist,method="complete");
myhc;

Call:
hclust(d = mydist, method ="complete")

Cluster method   : complete
Number of objects: 5

plot(myhc,hang=0.1)



2、热图聚类过程:

一、首先用dist()函数计算变量间距离
dist.r = dist(data, method=" ")

二、用heatmap()函数进行热点图聚类
对于heatmap中具体参数,这里不做过多介绍,可在帮助文档中找说明。除此heatmap函数之外,gplots包中的heatmap.2()函数,也可以做热点图聚类。

其中参数不做过多描述。若有需求,
请分享并回复heatmap.2
即可得到答案。
实战例子:

require(graphics);
dist.r<-dist(USArrests,method="euclidean") #  方法:欧氏距离
dist.r

#聚类并画图
heatmap(as.matrix(dist.r))


3、多维标度和聚类的结果

MDS方法对距离矩阵进行降维,用不同的颜色来表示聚类的结果。
另一种聚类效果展示。

例子:

欢迎给位同学关注R语言中文网微信号:rchinanet

微信扫一扫
获得更多内容






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 16:49 , Processed in 0.017977 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表