聚类分析中的可视化
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
问题提出
当数据没有标签或者有少量标签的时候,我们需要使用聚类分析来发现数据的模式。便于理解聚类分析的结果或者效果,如何对聚类分析做可视化呢?
解决方法
-
第一步:安装和加载聚类分析R包-factoextra
library(pacman)
p_load(factoextra)
-
第二步:导入数据集,采用R语言自带的
USArrests
# 导入数据集
data("USArrests")
# 数据集理解
?USArrests
# 数据集检视
head(USArrests)
-
第三步:数据集准备与处理,对数据集做标准化处理,每列转换为均值为0,标准差为1
df <- scale(USArrests)
head(df, 10)
-
第四步:聚类分析及可视化。
不管是层次聚类还是划分聚类,都要寻找一个距离度量。然后根据计算后的距离,采用不同的策略进行数据集的汇聚。
4.1 基于相关系数的距离度量和可视化
res.dist <- get_dist(df, method = "pearson")
head(round(as.matrix(res.dist), 2))[, 1:6]
# 可视化相关系数矩阵
fviz_dist(res.dist, lab_size = 8)

4.2 增强型分层聚类和可视化
res.hc <- eclust(df, "hclust")
fviz_dend(res.hc, rect = TRUE) # 树图
fviz_cluster(res.hc) # 散点图
fviz_silhouette(res.hc) # 轮廓图
分层树图

聚类散点图

轮廓图

4.3 增强型K均值聚类和可视化
res.km <- eclust(df, "kmeans", nstart = 25) #聚类的散点图
fviz_gap_stat(res.km$gap_stat) # 不同K值下Gap 统计图,指导选择最佳K值
fviz_silhouette(res.km) # 轮廓图,每种聚类下面的分布情况
聚类散点图

不同K值Gap统计图

轮廓图

k均值结果可视化的其他表示方式
p_load(cluster, fpc)
plotcluster(USArrests, res.km$cluster)

clusplot(USArrests, res.km$cluster, color=TRUE, shade=TRUE,
labels=2, lines=0)

思考题
-
如何查看聚类结果的详细信息
-
如何对K均值聚类的中心点做可视化分析
想找数据工作或者要招数据人才的朋友,或者想了解数据人有趣事情的朋友,可以关注公众号【数据人才】。
想了解数据科学和人工智能的朋友,可以关注公众号【数据科学与人工智能】。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!