Lernen mit Zieldaten (Label / Target)
Lernen ohne Zieldaten
Interaktion mit Umgebung
Hands-On: MNIST Datensatz
Welche Daten enthält der Datensatz?
data.shape -> (N_data, size_input)
Die shape eines Datensatzes zeigt die Anzahl der Elemente (N_data) sowie das format der einzelnen Elemente (size_input)
Hands-On: MNIST Datensatz
Welches Format haben die Daten?
Die type(x) Funktion gibt die Klasse von x an
type(data[0]) -> class
Die built-in Funktion x.dtype gibt den Datentyp von x an
data.dtype -> data_type
Hands-On: MNIST Datensatz
Welche Klassen gibt es und wie sind diese verteilt?
numpy.unique(x) liefert eine liste aller Elemente die in x vorkommen
labels = np.unique(target)
numpy.bincount(x) liefert die Anzahl von Integerwerten in x, geordnet nach Zahlenwert der Integer
counts = np.bincount(target.astype(int))
Hands-On: MNIST Datensatz
Wie machen wir die Klassen dem Modell verständlich?
Um Stringlabel in für das Modell verständliche Floats zu verwandeln nutzen wir One-Hot-Encoding
# zB "3" -> [0,0,0,1,0,0,0,0,0,0]
#
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
labels = encoder.fit_transform(target)
Achtung: Die letzte Zeile erwartet hier target mit shape (N,1)
Hands-On: MNIST Datensatz
Welche Skalierung der Daten ist sinnvoll?
scaled_data = (data - np.min(data)) / (np.max(data) - np.min(data)) * 2 - 1
Hands-On: MNIST Datensatz
Öffnen sie dieses Notebook und bearbeiten Sie die Aufgaben. Beantworten Sie so folgende Fragen:
Die Lösung finden Sie in diesem Notebook