Wie kann eine hübsche grafische Darstellung der Ergebnisse der k-means Clusteranalyse erstellt werden?

77

Ich benutze R, um K-bedeutet Clustering zu machen. Ich verwende 14 Variablen, um K-means auszuführen

  • Was ist ein hübscher Weg, um die Ergebnisse von K-means zu zeichnen?
  • Gibt es bereits Implementierungen?
  • Erschweren 14 Variablen das Zeichnen der Ergebnisse?

Ich habe etwas namens GGcluster gefunden, das cool aussieht, sich aber noch in der Entwicklung befindet. Ich habe auch etwas über Sammon-Mapping gelesen, es aber nicht sehr gut verstanden. Wäre das eine gute Option?

JEquihua
quelle
1
Wenn Sie sich aus irgendeinem Grund mit den vorliegenden Lösungen für dieses sehr praktische Problem befassen, sollten Sie Kommentare zu vorhandenen Antworten hinzufügen oder Ihren Beitrag mit mehr Kontext aktualisieren. Die Arbeit mit 40.000 Fällen ist hier eine wichtige Information.
CHL
Ein weiteres Beispiel mit 11 Klassen und 10 Variablen finden Sie auf Seite 118 unter Elemente des statistischen Lernens . nicht sehr informativ.
Denis
Bibliothek (Animation) kmeans.ani (Ihre Daten, Zentren = 2)
Kartheek Palepu

Antworten:

27

Ich würde den Silhouettenplot dazu verschieben, da es unwahrscheinlich ist, dass Sie viele verwertbare Informationen aus Paarplots erhalten, wenn die Anzahl der Dimensionen 14 beträgt.

library(cluster)
library(HSAUR)
data(pottery)
km    <- kmeans(pottery,3)
dissE <- daisy(pottery) 
dE2   <- dissE^2
sk2   <- silhouette(km$cl, dE2)
plot(sk2)

Dieser Ansatz wird häufig zitiert und ist allgemein bekannt (siehe hier für eine Erklärung).

Rousseeuw, PJ (1987) Silhouetten: Eine grafische Hilfe zur Interpretation und Validierung der Clusteranalyse . J. Comput. Appl. Mathematik. , 20 , 53-65.

user603
quelle
Ich mag das. Ich werde es weiter untersuchen. Danke.
JEquihua,
@ user603: Möchtest du den Kern der Erklärung in deiner Antwort angeben? Der Link, den Sie vor 2,5 Jahren gaben, ist tot. Der Artikel ist noch da, aber eine kurze Einführung in diese Technik wäre schön.
Steen,
Der Link zeigte auf das Papier (es war ein nicht geschlossener Zugangspunkt, der in der Tat dunkel geworden ist).
user603
Ich habe eine seltsame Handlung mit diesem silhoette (auf der linken Seite ist die clusplot und auf der rechten Seite ist silhoette Grundstück, das ist zu erwarten?) - i.imgur.com/ZIpPlhT.png
vipin8169
56

Hier ein Beispiel, das Ihnen helfen kann:

library(cluster)
library(fpc)

data(iris)
dat <- iris[, -5] # without known classification 
# Kmeans clustre analysis
clus <- kmeans(dat, centers=3)
# Fig 01
plotcluster(dat, clus$cluster)

# More complex
clusplot(dat, clus$cluster, color=TRUE, shade=TRUE, 
         labels=2, lines=0)

# Fig 03
with(iris, pairs(dat, col=c(1:3)[clus$cluster])) 

Anhand des zuletzt genannten Diagramms können Sie entscheiden, welche Ihrer ursprünglichen Variablen geplottet werden sollen. Möglicherweise sind 14 Variablen sehr groß. Sie können also vorher eine Hauptkomponentenanalyse (PCA) durchführen und dann die ersten zwei oder drei Komponenten der PCA verwenden, um die Clusteranalyse durchzuführen.

Manuel Ramón
quelle
1
Ich kann nicht herausfinden, wie DC1 und DC2 zu interpretieren sind. Könnten Sie mir die richtige Richtung weisen?
UD1989
1
@Upasana Datta: Die beiden Komponenten sind das Ergebnis der Anwendung der Hauptkomponentenanalyse (PCA, Function Princomp) auf die Daten. Sie sind lineare Kombinationen der Eingangsvariablen, die den größten Teil der Variabilität der Beobachtungen ausmachen.
Rakensi
Hallo, ich bin verwirrt darüber, wie die Ellipse im 2. Plot berechnet wird. Wie wird ermittelt, "ob diese beiden Komponenten 95,81% der Punktvariabilität erklären"?
mynameisJEFF
@mynameisJEFF Ich würde davon ausgehen, dass latente / kanonische Variablen, eigne Werte usw. verwendet werden. Sie können die Dokumentation überprüfen, aber dies bedeutet normalerweise, wenn Sie einen Biplot sehen, der als solcher gekennzeichnet ist. Es wird gesagt, dass 95,81% der Variation in den Daten durch die 2 latenten Variablen erklärt werden, auf denen die Daten aufgezeichnet sind. Update - Ich habe es nur gegoogelt und es verwendet in der Tat Hauptkomponenten.
Hack-R
Warum brauchst du "mit" hier? Es wäre schlanker, die pairsFunktion einfach zu verlassen .
Anatolii Stepaniuk
4

Der einfachste Weg, den ich kenne, ist der folgende:

X <- data.frame(c1=c(0,1,2,4,5,4,6,7),c2=c(0,1,2,3,3,4,5,5))
km <- kmeans(X, center=2)
plot(X,col=km$cluster)
points(km$center,col=1:2,pch=8,cex=1)

Auf diese Weise können Sie die Punkte jedes Clusters mit einer anderen Farbe und ihren Schwerpunkten zeichnen.

darioSka
quelle