data(iris) iris[,1:4]->X str(X) pairs(X) Modeles<-list(NULL) for(k in 1:30){ Modeles[[k]]<-kmeans(X,k,nstart=10) } withinSS<-rep(0,length(Modeles)) for(k in 1:length(Modeles)){ withinSS[k]<-Modeles[[k]]$tot.withinss } plot(withinSS,type="b") ### Utilions BIC pour choisir le nb de classes bic<-function(reskmeans) { n<-length(reskmeans$cluster) k<-dim(reskmeans$centers)[1] p<-dim(reskmeans$centers)[2] traceS<-reskmeans$tot.withinss / n logLc=-0.5*(n*p + n*p*log(traceS/p))-n*log(k)+(n*p/2) *log(2*pi) nu<- k*p+1 bic<- -2 *logLc + 2*nu*log(n) } bicCriterion<-rep(0,length(Modeles)) for(k in 1:length(Modeles)){ bicCriterion[k]<-bic(Modeles[[k]]) } plot(bicCriterion,type="b") ### Utilisons le package mclust #### library(mclust) Mclust(X)->result