2016-05-13 40 views
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=3sil元素是0.8695872 0.8695872 0.8695872 0.8695872 0.8695872。 我的問題是爲什麼我在每個k中獲得相同的元素。我期望不同的sil元素,因爲pam結果可能會因爲每個種子而不同,因此,pamaverage Silhoettes可能會不同!

UPDATE:

最後,我測試iris數據,並同時使用pamk-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) 
} 

這是最後一次循環silpam

[1] 0.2918482 0.2918482 0.2918482 0.2918482 0.2918482

這是最後一次循環silk-means

[1] 0.3109128 0.4291905 0.4262538 0.3160188 0.2875212

回答

0

PAM的UE一個相當複雜的初始化sc血紅素減少了昂貴的迭代次數。每次選擇相同的初始質心比選擇k個隨機對象的k-均值更有可能。

相關問題