2016-05-13 4 views
0

Für jede k, verwende ich verschiedene Samen und fügen Sie jede pam average Silhouette zu sil Array. der Code ist wie unten:Holen Sie sich die gleichen Pam durchschnittliche Silhouetten mit verschiedenen Samen in R

sil <- numeric(5) 
    for(k in 3:10){ 
    for (i in 1:5){ 
     set.seed(i) 
     PAM<-pam(RFML_table,k) 
     sil[[i]]<-PAM$silinfo$avg.width 
    } 
    minSil[[k]]<-min(sil) 
    maxSeed[[k]]<-which.max(sil) 
    } 
    kClust<-which.max(minSil) 
    kSeed<-maxSeed[kClust] 

jedoch jedes Mal, meine sil Arrays Elemente gleich sind. Zum Beispiel sind sil Elemente für k=30.8695872 0.8695872 0.8695872 0.8695872 0.8695872. Meine Frage ist, warum ich die gleichen Elemente in jedem k bekomme. Ich erwarte verschiedene sil Elemente, weil pam Ergebnisse für jeden Samen abweichen können und als Konsequenz average Silhoettes für pam s möglicherweise anders sein!

UPDATE:

Schließlich habe ich testen Sie die iris Daten und beide pam verwenden und k-means. hier ist der Code:

library(cluster) 
dni3 <- dimnames(iris3) 
ii <- data.frame(matrix(aperm(iris3, c(1,3,2)), ncol = 4, 
         dimnames = list(NULL, sub(" L.",".Length", 
                sub(" W.",".Width", dni3[[2]])))), 
       Species = gl(3, 50, labels = sub("S", "s", sub("V", "v", dni3[[3]])))) 
all.equal(ii, iris) # TRUE 
ii$Species=NULL 
dissE <-daisy(ii) 
dE2<- dissE^2 
minSil<-numeric(10) 
maxSeed<-numeric(10) 
sil <- numeric(5) 
seeds<-numeric(5) 

for(k in 3:10){ 
    for (i in 1:5){ 
    set.seed(i*1000) 
    PAM<-pam(ii,k) 
    sil[[i]]<-PAM$silinfo$avg.width 
    } 
    s=c(s,sil) 
    minSil[[k]]<-min(sil) 
    maxSeed[[k]]<-which.max(sil) 
} 
for(k in 3:10){ 
    for (i in 1:5){ 
    set.seed(i*1000) 
    km <- kmeans(ii,centers = k) 
    sil[[i]]<-mean(silhouette(km$cl, dissE)[,3]) 
    } 
    z=c(z,sil) 
    minSil[[k]]<-min(sil) 
    maxSeed[[k]]<-which.max(sil) 
} 

dies ist die letzte Schleife sil für pam:

[1] 0.2918482 0.2918482 0.2918482 0.2918482 0.2918482

dies ist die letzte Schleife sil für k-means:

[1] 0.3109128 0.4291905 0.4262538 0.3160188 0.2875212

Antwort

0

PAM ues eine ziemlich komplexe Initialisierung sc um später die Anzahl der teuren Iterationen zu reduzieren. Es ist viel wahrscheinlicher, jedes Mal die gleichen Anfangsschwerpunkte zu wählen als k-Mittel, die einfach k zufällige Objekte auswählen.

Verwandte Themen