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=3
0.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