Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 92

Trainieren eines binären Klassifikators

Оглавление

Für den Anfang werden wir die Aufgabe vereinfachen und lediglich versuchen, eine Ziffer zu erkennen – beispielsweise die Ziffer 5. Dieser »5-Detektor« ist ein Beispiel für einen binären Klassifikator, mit dem sich genau zwei Kategorien unterscheiden lassen, 5 und nicht-5. Erstellen wir also die Zielvektoren für diese Klassifikationsaufgabe:

y_train_5 = (y_train == 5) # True bei allen 5en, False bei allen anderen Ziffern.

y_test_5 = (y_test == 5)

Nun wählen wir einen Klassifikator aus und trainieren diesen. Ein guter Ausgangspunkt ist der Klassifikator für das stochastische Gradientenverfahren (SGD), dem die Klasse SGDClassifier in Scikit-Learn entspricht. Dieser Klassifikator hat den Vorteil, sehr große Datensätze effizient zu bearbeiten. Dies liegt daran, dass SGD die Trainingsdatenpunkte einzeln und nacheinander abarbeitet (wodurch SGD außerdem für das Online-Learning gut geeignet ist). Erstellen wir zunächst einen SGDClassifier und trainieren wir diesen auf dem gesamten Trainingsdatensatz:

from sklearn.linear_model import SGDClassifier

sgd_clf = SGDClassifier(random_state=42)

sgd_clf.fit(X_train, y_train_5)

Der SGDClassifier arbeitet beim Trainieren zufallsbasiert (daher der Name »stochastisch«). Wenn Sie reproduzierbare Ergebnisse erhalten möchten, sollten Sie den Parameter random_state setzen.

Nun können Sie mit dem Klassifikator Bilder mit der Nummer 5 erkennen:

>>> sgd_clf.predict([some_digit])

array([ True])

Der Klassifikator meint, dass dieses Bild eine 5 darstellt (True). Es sieht so aus, als läge er in diesem Fall richtig! Werten wir nun die Qualität dieses Modells aus.

Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow

Подняться наверх