J'utilise K-means pour regrouper mes données et je cherchais un moyen de suggérer un numéro de cluster "optimal". Les statistiques sur les écarts semblent être un moyen courant de trouver un bon numéro de cluster.
Pour une raison quelconque, il renvoie 1 comme numéro de cluster optimal, mais quand je regarde les données, il est évident qu'il y a 2 clusters:
Voici comment j'appelle gap dans R:
gap <- clusGap(data, FUN=kmeans, K.max=10, B=500)
with(gap, maxSE(Tab[,"gap"], Tab[,"SE.sim"], method="firstSEmax"))
L'ensemble de résultats:
> Number of clusters (method 'firstSEmax', SE.factor=1): 1
logW E.logW gap SE.sim
[1,] 5.185578 5.085414 -0.1001632148 0.1102734
[2,] 4.438812 4.342562 -0.0962498606 0.1141643
[3,] 3.924028 3.884438 -0.0395891064 0.1231152
[4,] 3.564816 3.563931 -0.0008853886 0.1387907
[5,] 3.356504 3.327964 -0.0285393917 0.1486991
[6,] 3.245393 3.119016 -0.1263766015 0.1544081
[7,] 3.015978 2.914607 -0.1013708665 0.1815997
[8,] 2.812211 2.734495 -0.0777154881 0.1741944
[9,] 2.672545 2.561590 -0.1109558011 0.1775476
[10,] 2.656857 2.403220 -0.2536369287 0.1945162
Suis-je en train de faire quelque chose de mal ou quelqu'un connaît-il une meilleure façon d'obtenir un bon numéro de cluster?
la source
xy
xy <- xy[, 1, drop=FALSE]
R
x
y
la source
J'ai eu le même problème que l'affiche originale. La documentation R indique actuellement que le réglage d'origine et par défaut de d.power = 1 était incorrect et devrait être remplacé par d.power: "La valeur par défaut, d.power = 1, correspond à l'implémentation R" historique ", tandis que d.power = 2 correspond à ce que Tibshirani et al avaient proposé. Cela a été trouvé par Juan Gonzalez, en 2016-02. "
Par conséquent, changer d.power = 2 a résolu le problème pour moi.
https://www.rdocumentation.org/packages/cluster/versions/2.0.6/topics/clusGap
la source