R语言:如何将K-means 4聚类结果展示在Biplot中?
解决milk数据集K-means聚类的Biplot可视化问题
原代码的问题点
- 未定义
milk_matrix,直接使用milk数据集即可(flexclust::milk本身就是可用于PCA的数据框) - Biplot未关联聚类结果,未设置
xlabs参数为聚类成员向量,也未通过颜色区分聚类分组
修正后的完整代码
# 加载包与数据 library("flexclust") data(milk) # 对milk数据集做PCA(修正原代码中milk_matrix未定义的问题) pca_milk <- prcomp(x = milk, center = TRUE, scale. = FALSE, retx = TRUE) # 执行K-means聚类,分成4类 km4 <- kmeans(milk, centers = 4) # 查看各聚类的样本数量(可选,用于验证聚类分布) table(km4$cluster) # 绘制带聚类标签与颜色区分的Biplot biplot(pca_milk, main = "Biplot of Milk Dataset with 4 K-means Clusters", cex = c(0.7, 1), scale = TRUE, # 将xlabs设置为聚类成员向量(每个点显示对应的聚类编号) xlabs = as.character(km4$cluster), # 按聚类为点上色,增强区分度 col = c(km4$cluster, rep("black", ncol(milk))) )
关键代码解释
xlabs = as.character(km4$cluster):把每个样本对应的聚类编号(km4$cluster是整数向量)转为字符,作为Biplot中样本点的标签,直接呈现聚类成员归属col = c(km4$cluster, rep("black", ncol(milk))):前半部分用聚类编号作为颜色索引,让同一聚类的样本点颜色一致;后半部分固定变量箭头为黑色,避免变量标签颜色混乱- 如果需要对数据做标准化处理(更适合PCA分析),可以将
prcomp中的scale. = FALSE改为scale. = TRUE
内容的提问来源于stack exchange,提问作者Rosie Lomas
相关产品推荐
相关产品推荐

