Étant novice en R, je ne suis pas très sûr de savoir comment choisir le meilleur nombre de clusters pour faire une analyse k-means. Après avoir tracé un sous-ensemble de données ci-dessous, combien de clusters seront appropriés ? Comment puis-je effectuer une analyse dendrologique en grappes ?
n = 1000
kk = 10
x1 = runif(kk)
y1 = runif(kk)
z1 = runif(kk)
x4 = sample(x1,length(x1))
y4 = sample(y1,length(y1))
randObs <- function()
{
ix = sample( 1:length(x4), 1 )
iy = sample( 1:length(y4), 1 )
rx = rnorm( 1, x4[ix], runif(1)/8 )
ry = rnorm( 1, y4[ix], runif(1)/8 )
return( c(rx,ry) )
}
x = c()
y = c()
for ( k in 1:n )
{
rPair = randObs()
x = c( x, rPair[1] )
y = c( y, rPair[2] )
}
z <- rnorm(n)
d <- data.frame( x, y, z )
4 votes
Si vous n'êtes pas complètement convaincu par les kmeans, vous pouvez essayer l'algorithme de clustering DBSCAN, disponible dans la base de données de l'UE.
fpc
paquet. C'est vrai, vous devez ensuite définir deux paramètres... mais j'ai trouvé quefpc::dbscan
fait ensuite un assez bon travail pour déterminer automatiquement un bon nombre de clusters. De plus, il peut réellement produire un seul cluster si c'est ce que les données vous indiquent - certaines des méthodes dans les excellentes réponses de @Ben ne vous aideront pas à déterminer si k=1 est réellement le meilleur.0 votes
Voir aussi stats.stackexchange.com/q/11691/478