2016-12-29 3 views
0

Je veux lancer un algorithme de chevrotine dans R ce qui combine hac (clustering hiérarchique) avec clustering k-means. donc, je veux être sélectionné plusieurs centre de k-means. Par exemple, l'un d'un cluster a trois graines. Ceci est mon code,Comment choisir plusieurs centres initiaux de clustering k-means dans R

données de l'iris k-means

iristr <- read.csv("iristr.CSV", header = TRUE) 
str(iristr) 
iristr.m <- as.matrix(iristr[,1:4]) 
km <- kmeans(iristr.m, centers = 3) 
km 
table(km$cluster,iristr$Species) 
données

iris Buckshot

irists <- read.csv("irists.csv", header = TRUE) 
str(irists) 
irists.m <- as.matrix(irists[,1:4]) 
dm <- dist(irists.m, method = "euclidean") 
hc <- hclust(dm, method = "complete") 
plot(hc) 
clusterCut <- cutree(hc,3) 
clusterCut 
i1 <- iristr.m[c(1,4,12),] # one of cluster have many seed(center) 
i1 
i2 <- iristr.m[c(2,5,8),] # one of cluster have many seed(center) 
i2 
i3 <- iristr.m[c(3,6,7,9,10,11),] # one of cluster have many seed(center) 
i3 
buckshot <- kmeans(iristr.m, centers=i1,i2,i3) # realized only "i1" centers 
buckshot 
table(buckshot$cluster,iristr$Species) 
+1

Manquant une * de données * et * une sortie réelle *, tout est complètement spéculatif. S'il vous plaît lire sur [des exemples reproductibles] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) et ensuite éditer votre question avec quelque chose d'utilisable. – r2evans

Répondre

0

Voici un exemple d'appliquer l'algorithme de clustering Kmeans sur les données Iris. En utilisant les données Iris, les colonnes de caractéristiques 1-4 sont affectées à la variable x et la classe à la variable y.

x = iris[,-5] 
y = iris$Species 

Dans l'algorithme Kmeans, les affectations de cluster initiales sont aléatoires. Puisque nous savons qu'il y a 3 espèces dans ces données, le nombre total de clusters peut être spécifié comme 3. De même que les affectations de départ dans Kmeans sont aléatoires, le nstart peut être assigné 10, ce qui signifie 10 assignations initiales (aléatoires) être essayé et celui qui a la plus petite somme de carrés à l'intérieur du groupe (WCSS) (somme des fonctions de distance de chaque point dans le groupe au centre K) sera sélectionné comme final. Vous pouvez affecter une valeur plus élevée au paramètre "nstart" pour indiquer à l'algorithme de Kmeans d'essayer plus d'affectations de centre initiales aléatoires.

kc <- kmeans(x, centers = 3, nstart = 10) 

Pour connaître l'erreur, le résultat de clustering est ensuite comparée avec les espèces/classes dans les données de l'iris.

table(y,kc$cluster) 

Enfin, le résultat est visualisé en traçant la longueur des sépales comme axe des x et des sépales Largeur comme axe y (vous pouvez choisir différents si).

plot(x[c("Sepal.Length", "Sepal.Width")], col = kc$cluster) 
points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col = 1:3, pch=23, cex=3) 

enter image description here

+0

merci pour votre aide !! –