Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 106
Klassifikation mit mehreren Ausgaben
ОглавлениеDie letzte Art hier betrachteter Klassifikationsaufgaben nennt man Klassifikation mit mehreren Kategorien und mehreren Ausgaben (oder einfach Klassifikation mit mehreren Ausgaben). Sie ist eine Verallgemeinerung der Klassifikation mit mehreren Labels, wobei jedes Label mehrere Kategorien beinhalten kann (also mehr als zwei mögliche Werte haben kann).
Um dies zu veranschaulichen, erstellen wir ein System, das Rauschen aus Bildern entfernt. Als Eingabe erhält es ein verrauschtes Bild einer Ziffer und wird (hoffentlich) ein sauberes Bild einer Ziffer als Array von Pixelintensitäten ähnlich den MNIST-Bildern ausgeben. Beachten Sie dabei, dass die Ausgabe des Klassifikators mehrere Labels aufweist (ein Label pro Bildpunkt) und jedes Label mehrere Werte annehmen kann (Pixelintensitäten von 0 bis 255). Daher ist dies ein Beispiel für ein Klassifikationssystem mit mehreren Ausgaben.
Die Unterscheidung zwischen Klassifikation und Regression ist wie in diesem Beispiel manchmal unscharf. Es lässt sich argumentieren, dass die Vorhersage der Intensität von Pixeln mehr mit Regression als mit Klassifikation zu tun hat. Außerdem sind Systeme mit mehreren Ausgaben nicht auf Klassifikationsaufgaben beschränkt; Sie könnten sogar ein System entwickeln, das mehrere Labels pro Datenpunkt ausgibt, darunter Kategorien und Werte. |
Erstellen wir zunächst Trainings- und Testdatensätze, indem wir den Intensitäten der Pixel in den MNIST-Bildern mit der Funktion randint() aus NumPy Rauschen hinzufügen. Die Zielbilder sind dann die Originalbilder:
noise = rnd.randint(0, 100, (len(X_train), 784))
X_train_mod = X_train + noise
noise = rnd.randint(0, 100, (len(X_test), 784))
X_test_mod = X_test + noise
y_train_mod = X_train
y_test_mod = X_test
Schauen wir uns ein Bild aus dem Testdatensatz an (ja, wir schnüffeln hier in den Testdaten herum, Sie sollten an dieser Stelle entrüstet seufzen):
Auf der linken Seite ist das verrauschte Eingabebild und auf der rechten Seite das saubere Zielbild. Trainieren wir nun den Klassifikator, um dieses Bild zu säubern:
knn_clf.fit(X_train_mod, y_train_mod)
clean_digit = knn_clf.predict([X_test_mod[some_index]])
plot_digit(clean_digit)
Wir sind nah genug am Ziel! Damit beenden wir unsere Tour durch die Klassifikationsverfahren. Sie wissen nun, wie Sie Metriken für Klassifikationsaufgaben auswählen, einen guten Kompromiss zwischen Relevanz und Sensitivität eingehen, Klassifikatoren vergleichen und ganz allgemein gute Systeme für unterschiedliche Klassifikationsaufgaben konstruieren.