说明
在聚类树图中可以观测到聚类的层次,但是仍然得不到组的信息,不过我们可以定义一个聚类树图会拥有多少个簇,并控制树的高度以便将树分成不同的组。
操作
接上节的数据hc
将数据分成四组
fit = cutree(hc,4)
检查数据的簇标签
fit
[1] 1 1 2 1 2 1 2 2 1 1 1 2 2 1 1 1 2 1 2 3 4 3 4 3 3 4 4 3 4 4 4 3 3 3 4 4 3 4 4 4 4 4 4 4 3 3 4 4 4 3 4 3 3 4 4 4 3 4 4 3
统计每一个簇中的对象数
table(fit)
fit
1 2 3 4
11 8 16 25
使用红色矩形框可视化矩形的簇
plot(hc,hang = -0.01,cex =0.7)
rect.hclust(hc,k=4,border = "red")
除了使用红色矩形来框来界定簇,还可以使用它对单独某个簇进行标记:
plot(hc,hang = -0.01,cex =0.7)
rect.hclust(hc,k = 4,which = 2,border = "red")
标记特定簇
还可以调用dendextend包,使用不同的颜色来绘制红色矩形框的各个不同聚簇。
根据分支所在的不同簇,对其涂色
library(dendextend)#delete
dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")
不同簇不同色
在这些簇周围添加红色矩形框
dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")
dend %>% rect.dendrogram(k=4,horiz = TRUE)
最后,在图中添加一条切割线来展示对树的操作结:
dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")
dend %>% rect.dendrogram(k=4,horiz = TRUE)
abline(v = heights_per_k.dendrogram(dend)["4"] + .1,lwd = 2,lty = 2,col = "blue")
水平聚类树中绘制分割线
首先R是一种专业性很强的统计语言,如果想学得快一些的话,基本的统计学知识要懂,不然很多东西会掌握的比较慢。掌握基本语法和操作,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》,这个过程中最好结合一些小例子来做一些分析的东西。其他还有《R语言实例》《R语言核心技术手册》也都是很好的书!如果需要可视化的话,强烈不推荐学习R本身的作图系统,实在是太不友好了.....还是用ggplot2吧。
掌握了上面的,就可以深入一些了,如果是做数据分析和可视化,推荐《ggplot2:数据分析与图形艺术》,这个才是作图的神器啊.....如果是空间分析相关的,推荐《Applied Spatial Data Analysis with R》,这个如果可以的话看英文版,而且要有地学的一些知识背景,中文版翻译的太次了,尽量不要看。数据挖掘机器学习之类的,可以看看比如《数据挖掘与R语言》、《机器学习——实用案例解析》,不过我觉得这几本书没上面的那几本好,但是可以大概看看是咋回事,最好还是看看专门的相关书籍,熟悉各种算法和流程,到时候搜索R的package,照着文档和例子搞定,不是特别难。
最后,强烈推荐统计之都、R-bloggers,统计之都以及谢益辉、肖凯、刘思喆等人的博客(自行Google以及到上面的网站找链接),订阅一下,会很有帮助,RStudio是个很棒的IDE,用起来很爽,功能很强大。
总之,你可以从《R语言实战》开始出发吧!
你是要做聚类分析是吧,应该是用这个函数是吧hclust(d, method = "complete", members = NULL)。你在r里面输入?hclust。d代表不同结构的分布,你可以运行一下这个程序看一下require(graphics)
hc <- hclust(dist(USArrests), "ave")
plot(hc)
plot(hc, hang = -1)