我使用mclust在数据集中查找群集。现在我想将这些发现实现到外部非r软件中(预测。因此,不像以前类似的问题中所建议的那样,麦克风是一种选择)来对新观察进行分类。我需要知道如何 mclust对观察进行分类。
由于mclust为每个群集输出中心和协方差矩阵,因此计算每个观察和每个群集的马哈拉诺比斯距离是合理的。然后可以将观测分类到mahalonobi最近的群集。然而,似乎并非完全没有工作。
带有模拟数据的示例代码(在此示例中,我只使用一个数据集d,并尝试通过上面概述的mahalanobi方法获得与mclust相同的分类):
set.seed(123)
c1<-mvrnorm(100,mu=c(0,0),Sigma=matrix(c(2,0,0,2),ncol=2))
c2<-mvrnorm(200,mu=c(3,3),Sigma=matrix(c(3,0,0,3),ncol=2))
d<-rbind(c1,c2)
m<-Mclust(d)
int_class<-m$classification
clust1_cov<-m$parameters$variance$sigma[,,1]
clust1_center<-m$parameters$mean[,1]
clust2_cov<-m$parameters$variance$sigma[,,2]
clust2_center<-m$parameters$mean[,2]
mahal_clust1<-mahalanobis(d,cov=clust1_cov,center=clust1_center)
mahal_clust2<-mahalanobis(d,cov=clust2_cov,center=clust2_center)
mahal_clust_dist<-cbind(mahal_clust1,mahal_clust2)
mahal_classification<-apply(mahal_clust_dist,1,function(x){
match(min(x),x)
})
table(int_class,mahal_classification)
#List mahalanobis distance for miss-classified observations:
mahal_clust_dist[mahal_classification!=int_class,]
plot(m,what="classification")
#Indicate miss-classified observations:
points(d[mahal_classification!=int_class,],pch="X")
#Results:
> table(int_class,mahal_classification)
mahal_classification
int_class 1 2
1 124 0
2 5 171
> mahal_clust_dist[mahal_classification!=int_class,]
mahal_clust1 mahal_clust2
[1,] 1.340450 1.978224
[2,] 1.607045 1.717490
[3,] 3.545037 3.938316
[4,] 4.647557 5.081306
[5,] 1.570491 2.193004
五种观察结果在mahalanobi方法和mclust之间有不同的分类。在图中,它们是两个簇之间的中间点。有人能告诉我为什么它不起作用,我怎么能模仿mclust的内部分类和预测.Mclust?
答案 0 :(得分:0)
在制定了上述问题之后,我做了一些额外的研究(thx LoBu),并发现关键是计算观察属于某个聚类的后验概率(pp),并根据最大pp进行分类。 :
denom<-rep(0,nrow(d))
pp_matrix<-matrix(rep(NA,nrow(d)*2),nrow=nrow(d))
for(i in 1:2){
denom<-denom+m$parameters$pro[i]*dmvnorm(d,m$parameters$mean[,i],m$parameters$variance$sigma[,,i])
}
for(i in 1:2){
pp_matrix[,i]<-m$parameters$pro[i]*dmvnorm(d,m$parameters$mean[,i],m$parameters$variance$sigma[,,i]) / denom
}
pp_class<-apply(pp_matrix,1,function(x){
match(max(x),x)
})
table(pp_class,m$classification)
#Result:
pp_class 1 2
1 124 0
2 0 176
但如果有人以外行的方式解释mahalanobi和pp方法之间的差异,我会很高兴。 “混合概率”(m $ parameters $ pro)表示什么?
答案 1 :(得分:0)
除Mahalanobis距离外,您还需要考虑群集权重。
这些衡量了群集重叠时的相对重要性。