R语言fviz_cluster绘制kmeans结果的Dim1/Dim2来源疑问
fviz_cluster绘制kmeans结果时Dim1/Dim2的生成原理
你观察到的Dim1、Dim2并非kmeans聚类的输出结果,而是fviz_cluster为了实现二维可视化,自动对原始特征做降维得到的维度,具体逻辑如下:
- kmeans聚类本身是在原始输入特征的高维空间中计算的,你代码里输入的
iris.scaled是4维特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),km.res对象只会存储聚类簇标签、簇中心、组内平方和等聚类核心结果,不会包含降维相关的维度信息。 - 调用
fviz_cluster()时,你传入了原始数据集iris[,-5]作为第二个参数,函数会基于这个原始特征矩阵,默认做主成分分析(PCA),提取方差解释率最高的前两个主成分,就是图上的Dim1(第一主成分)和Dim2(第二主成分)。 - 图中每个样本点的坐标,就是对应样本在这两个主成分上的投影值,这种降维方式可以在尽可能保留样本间差异信息的前提下,把高维分布压缩到二维平面,方便直观判断聚类的区分效果。
验证方法
你可以手动计算PCA对比结果,确认维度的来源:
# 手动计算PCA,和fviz_cluster的默认逻辑对齐 pca_res <- prcomp(iris.scaled, scale. = FALSE) # 之前已经对数据做过标准化,这里不需要再做 # 输出前两个主成分的前6行结果,和可视化图中的点坐标完全对应 head(pca_res$x[, 1:2])
拓展说明
如果你不想用PCA作为降维方式,也可以通过fviz_cluster的method参数指定其他降维方法,可选值包括mds(多维缩放)、tsne(t分布邻域嵌入)等。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

