参考自《R Graphics Cookbook》
绘制谱系图(Dendrogram),即聚类分析的树状图。过程是将一组带有多个自变量的观测(样本),依据其在n维空间内(n是自变量数目)中的距离,依据一定的距离算法和类别间距离的算法,将观测样本归为若干类的过程。可视化的时候长得比较像分开的树枝,所以就叫树或者树图。
本例使用一个含有四个自变量的数据绘制谱系聚类图。
使用自带的hclust函数进行聚类和绘图。
library(dplyr)
library(tidyr)
library(gcookbook)
#因为谱系图每次的结果都可能不同,因此需要设置一个种子将这次的模型保存
set.seed(392)
一、 对数据进行清洗
c2 <- countries %>%
filter(Year == 2009) %>% # 选取2009年的数据
drop_na() %>% # 删除带NA的行
sample_n(25) # 随机选择25行数据(25个观测值)
#查看数据
c2
#继续清洗数据:将变量Name作为行名(样本名),只保留4:7列的数据(4个自变量)
rownames(c2) <- c2$Name
c2 <- c2[, 4:7]
#再次查看
c2
#因为4个自变量间数量级的差别太大,影响计算距离时各自权重,因此需要将其保准化
c3 <- scale(c2)
#再次查看数据
c3
二、聚类树建模
#聚类
hc <- hclust(dist(c3))
# 可视化聚类树状图
plot(hc)
# 将树下的文本顶端对齐
plot(hc, hang = -1)
三、基本原理
#聚类分析是将样本分成不同类别的过程,而本节展示的是层次聚类,即聚类的过程中是一层依附于上一层,按照层次逐渐聚类,每一个小类都属于某一个大类。
#聚类分析中有很多参数可以设置,因此产生很多的选择,比如计算距离可以使用euclidean算法(默认),还可以有maximum等多种算法选择,另外在进行聚类时用哪种算法计算各类间的距离也有很多选择。不同的参数和方法选择可能带来不同的聚类结果.
#还有一点需要注意是如果自变量间的数值量级有差异,需要进行标准化,否则大量级的变量会对距离计算产生过大的影响,而导致距离的不准确.
#聚类树与分类树等机器学习的方法类似,可参考R语言实战等资料。