LoslegenKostenlos starten

Praxis: Arbeiten mit echten Daten

Mit echten Daten zu arbeiten ist oft anspruchsvoller als mit synthetischen Daten. Synthetische Daten helfen dabei, neue Konzepte und Techniken zu lernen, aber in den nächsten Übungen arbeitest du mit Daten, die eher dem entsprechen, was du in der Praxis oder im Studium vorfindest.

Die erste Herausforderung bei den Pokemon-Daten ist, dass es keine vorher festgelegte Anzahl von Clustern gibt. Du bestimmst die passende Anzahl an Clustern. Denk daran, dass das Knick-Signal im Scree-Plot bei echten Daten oft weniger deutlich ausfällt als bei synthetischen Daten. Nutze dein Urteil, um die Anzahl der Cluster festzulegen.

Im zweiten Teil dieser Übung visualisierst du die Ergebnisse der Clusteranalyse in zwei Dimensionen bzw. Features der Daten. Diese Features wurden für diese Übung etwas willkürlich gewählt. Überlege dir, wie du mit Visualisierung und Clustering interessante Gruppen von Pokemon für andere verständlich machen würdest.

Zusätzlicher Hinweis: Diese Übung verwendet das Argument iter.max in kmeans(). Wie du gesehen hast, ist kmeans() ein iterativer Algorithmus, der wiederholt, bis ein Abbruchkriterium erreicht ist. Die Standardanzahl an Iterationen für kmeans() ist 10, was nicht immer ausreicht, damit der Algorithmus konvergiert und sein Abbruchkriterium erreicht. Daher setzen wir die Anzahl der Iterationen auf 50, um dieses Problem zu vermeiden. Um zu sehen, was passiert, wenn kmeans() nicht konvergiert, probiere das Beispiel mit einer geringeren Anzahl an Iterationen (z. B. 3) aus. Das ist ein weiteres Beispiel dafür, was in realen Datensituationen passieren kann.

Diese Übung ist Teil des Kurses

<Kurs>Unüberwachtes Lernen in R</Kurs>
Kurs ansehen

Übungsanweisungen

Der Datensatz pokemon mit 800 Beobachtungen von Pokemon-Charakteren und 6 Dimensionen (also Features) steht in deinem Workspace bereit.

  • Bestimme mit kmeans() und nstart = 20 die Summe der quadratischen Fehler innerhalb der Cluster (total within sum of squares) für unterschiedliche Anzahlen von Clustern (zwischen 1 und 15).
  • Wähle basierend auf diesen Ergebnissen aus dem ersten Schritt eine passende Clusteranzahl und weise diese Zahl k zu.
  • Erstelle ein k-means-Modell mit k Clustern und speichere es in der Variablen km.out.
  • Erstelle ein Streudiagramm von Defense gegen Speed und zeige die Clusterzugehörigkeit für jede Beobachtung.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Initialize total within sum of squares error: wss
wss <- 0

# Look over 1 to 15 possible clusters
for (i in ___) {
  # Fit the model: km.out
  km.out <- kmeans(___, centers = ___, nstart = ___, iter.max = 50)
  # Save the within cluster sum of squares
  wss[i] <- ___
}

# Produce a scree plot
plot(1:15, wss, type = "b", 
     xlab = "Number of Clusters", 
     ylab = "Within groups sum of squares")

# Select number of clusters
k <- ___

# Build model with k clusters: km.out
km.out <- kmeans(___, centers = ___, nstart = ___, iter.max = 50)

# View the resulting model
km.out

# Plot of Defense vs. Speed by cluster membership
plot(pokemon[, c("Defense", "Speed")],
     col = km.out$cluster,
     main = paste("k-means clustering of Pokemon with", k, "clusters"),
     xlab = "Defense", ylab = "Speed")
Code bearbeiten und ausführen