2014-05-16 29 views
9

Mam dane, dla których chcę oszacować optymalną liczbę klastrów zgodnie ze statystykami Gap.Pobieranie optymalnej liczby klastrów w R

czytam stronę na gap statistic w R, który daje następujący przykład:

gs.pam.RU <- clusGap(ruspini, FUN = pam1, K.max = 8, B = 500) 
gs.pam.RU 

Kiedy zadzwonić gs.pam.RU.Tab, mam

Clustering Gap statistic ["clusGap"]. 
B=500 simulated reference sets, k = 1..8 
--> Number of clusters (method 'firstSEmax', SE.factor=1): 4 
     logW E.logW   gap  SE.sim 
[1,] 7.187997 7.135307 -0.05268985 0.03729363 
[2,] 6.628498 6.782815 0.15431689 0.04060489 
[3,] 6.261660 6.569910 0.30825062 0.04296625 
[4,] 5.692736 6.384584 0.69184777 0.04346588 
[5,] 5.580999 6.238587 0.65758835 0.04245465 
[6,] 5.500583 6.119701 0.61911779 0.04336084 
[7,] 5.394195 6.016255 0.62205988 0.04243363 
[8,] 5.320052 5.921086 0.60103416 0.04233645 

z którego chcesz pobrać liczbę klastrów. Ale w przeciwieństwie do funkcji pamk, która pozwala łatwo uzyskać ten numer, nie mogłem znaleźć sposobu na uzyskanie tego numeru za pomocą clusGap.

Następnie próbowałem użyć funkcji maxSE, ale nie mam pojęcia, co reprezentują argumenty f oraz SE.f lub jak mogę je pobrać z macierzy danych.

Dowolny łatwy sposób na uzyskanie optymalnej liczby klastrów?

Odpowiedz

8

Odpowiedź na wyjściu:

... 
--> Number of clusters (method 'firstSEmax', SE.factor=1): 4 
... 

Jest to liczba klastrów wytwarzającym maksymalną wartość gap (który jest w wierszu 4 w tabeli).

Argumenty maxSE(...)gap i SE.sim odpowiednio:

with(gs.pam.RU,maxSE(Tab[,"gap"],Tab[,"SE.sim"])) 
# [1] 4 

Czasem jest przydatna do działki gap, aby zobaczyć, jak dobrze zróżnicowane opcje grupowania są:

plot(gs.pam.RU) 
gap.range <- range(gs.pam.RU$Tab[,"gap"]) 
lines(rep(which.max(gs.pam.RU$Tab[,"gap"]),2),gap.range, col="blue", lty=2) 

Powiązane problemy