如何用R语言mclust包绘制带聚类椭球的指定变量散点图
实现方法
你不需要修改原有聚类计算逻辑,只需要提取目标变量后绘图即可,以下两种方式都可以复现带聚类椭球边界的散点图:
方法1:ggplot2 绘制(自定义灵活度高)
library(tidyverse) library(mclust) # 原有聚类代码保持不变 mc <- Mclust(iris[,-5]) # 提取Sepal.Length、Sepal.Width两个变量和对应聚类结果 plot_df <- iris %>% select(Sepal.Length, Sepal.Width) %>% mutate(cluster = as.factor(mc$classification)) ggplot(plot_df, aes(x = Sepal.Length, y = Sepal.Width, color = cluster, shape = cluster)) + geom_point(size = 2) + # 叠加对应聚类的椭球边界,默认采用95%多元正态置信区间,和参考效果匹配 stat_ellipse(linewidth = 1) + theme_bw()
方法2:mclust内置函数绘制(适配模型原生椭球)
直接调用mclust包自带的二维绘图函数,椭球完全匹配Mclust模型估计的混合高斯分布参数,不需要手动计算:
library(mclust) mc <- Mclust(iris[,-5]) # 指定绘制第1、2个变量(即Sepal.Length、Sepal.Width)的分类结果 mclust2Dplot( data = iris[, 1:2], what = "classification", classification = mc$classification, parameters = mc$parameters, z = mc$z )
运行后输出的图和预期效果一致:不同聚类的样本用不同形状、颜色的点标识,每个聚类外层包裹对应颜色的椭球边界。
内容的提问来源于stack exchange,提问作者Mariana
相关产品推荐
相关产品推荐

