0
對於每個k
,我使用不同的種子並將每個pam average Silhouette
添加到sil
陣列。代碼是等波紋管:獲得相同的PAM平均使用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]
然而,每次,我sil
數組元素是相等的。例如,對於k=3
的sil
元素是0.8695872 0.8695872 0.8695872 0.8695872 0.8695872
。 我的問題是爲什麼我在每個k
中獲得相同的元素。我期望不同的sil
元素,因爲pam
結果可能會因爲每個種子而不同,因此,pam
的average Silhoettes
可能會不同!
UPDATE:
最後,我測試iris
數據,並同時使用pam
和k-means
。這裏是代碼:
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)
}
這是最後一次循環sil
爲pam
:
[1] 0.2918482 0.2918482 0.2918482 0.2918482 0.2918482
這是最後一次循環sil
爲k-means
:
[1] 0.3109128 0.4291905 0.4262538 0.3160188 0.2875212