Unüberwachtes Lernen

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Unüberwachtes Lernen

  • Unüberwachtes Lernen findet Muster in Daten.
  • Zum Beispiel: Gruppierung von Kunden anhand ihrer Einkäufe
  • Komprimierung der Daten anhand von Kaufmustern (Dimensionsreduktion)
Unsupervised Learning in Python

Überwachtes vs. unüberwachtes Lernen

  • Überwachtes Lernen findet Muster für eine Vorhersageaufgabe
  • Zum Beispiel: Tumore als gutartig oder bösartig einstufen (Labels)
  • Unüberwachtes Lernen findet Muster in Daten.
  • ... aber ohne Vorgabe einer bestimmten Vorhersageaufgabe
Unsupervised Learning in Python

Iris-Datensatz

  • Messungen vieler Iris-Pflanzen
  • Drei Iris-Arten:
    • setosa
    • versicolor
    • virginica
  • Blütenblattlänge und -breite, Kelchblattlänge und -breite (die Merkmale des Datensatzes)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Unsupervised Learning in Python

Arrays, Merkmale und Proben

  • 2D-NumPy-Array
  • Spalten sind Messungen (die Merkmale)
  • Die Zeilen stehen für Iris-Pflanzen (die Proben).
Unsupervised Learning in Python

Iris-Daten sind 4-dimensional

  • Iris-Proben sind Punkte im vierdimensionalen Raum.
  • Dimension = Anzahl der Merkmale
  • Die Dimension ist zu hoch, um sie zu visualisieren!
  • ... aber unbeaufsichtigtes Lernen ermöglicht Einblicke
Unsupervised Learning in Python

k-Means-Clustering

  • Findet cluster in den Proben
  • Die Anzahl der Cluster muss angegeben werden
  • Implementiert in sklearn („scikit-learn“)
Unsupervised Learning in Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Unsupervised Learning in Python

Cluster-Label für neue Proben

  • Neue Proben können bestehenden Clustern zugeordnet werden.
  • k-means merkt sich den Mittelwert von jedem Cluster (die „Zentroiden“).
  • Ermittelt den nächstgelegenen Zentroid (centroid) für jede neue Probe.
Unsupervised Learning in Python

Cluster-Label für neue Proben

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Unsupervised Learning in Python

Streudiagramme

  • Streudiagramm der Kelchblattlänge im Vergleich zur Blütenblattlänge
  • Jeder Punkt steht für eine Iris-Probe.
  • Farbpunkte gemäß Cluster-Bezeichnungen
  • PyPlot (matplotlib.pyplot)

Streudiagramm

Unsupervised Learning in Python

Streudiagramme

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Unsupervised Learning in Python

Lass uns üben!

Unsupervised Learning in Python

Preparing Video For Download...