vlambda博客
学习文章列表

R语言实现期望最大化聚类(EM算法)

期望最大化算法在进行聚类时,是将数据集看作一个含有隐性变量的概率模型,然后实现模型最优化,反复迭代进行参数估计,找到与数据本身最契合的最优聚类方式,同时给出最优类别数k。




在R中实现期望最大化聚类的是mclust软件包中的核心函数Mclust()。其基本格式为:

Mclust(data, G = NULL, modelNames = NULL, prior = NULL, control = emControl(), initialization = NULL, warn = mclust.options("warn"), x =  NULL, verbose = interactive(), ...)

其中,data表示待聚类数据集,G为预设类别数,默认值 为1到9,由软件根据BIC值在这些默认值中选择最优解;moldelNames表示模型类别,软件会自动选择最优的参数值。

首先要安装和加载软件包:

install.packages("mclust")

library(mclust)



2  读取数据集。

Tourism_shares=read.csv("Tourism_shares.csv",head=T,encoding="utf-8") #读取数据集

head(Tourism_shares)#查看数据前几行

dim(Tourism_shares)#查看数据维度

R语言实现期望最大化聚类(EM算法)

3  实现期望最大化聚类。

fit_EM=Mclust(na.omit(Tourism_shares[,3:6]))

summary(fit_EM,parameters=TRUE) #查看聚类结果

结果显示,最优类别数为5,每个类中分别有2、7、7、6、3个样本。

R语言实现期望最大化聚类(EM算法)

4  绘制聚类结果图。

plot(fit_EM)#该命令可得到4张连续图,分别是:BIC图、分类图(classification)、概率图(uncertainty)、密度图(density)。

图中不仅将各类别样本的主要分布区域用椭圆圈出,并标出了类别中心点。其中概率图以样本点图形的大小来显示了该样本归属于相应类别的概率大小。

R语言实现期望最大化聚类(EM算法)R语言实现期望最大化聚类(EM算法)