Читать книгу 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.