Einführung
Dieses Lab ist ein Schritt-für-Schritt-Tutorial zum Umgang mit Klassifizierungstechniken auf dem Digits-Datensatz mit scikit-learn. In diesem Lab werden wir den Datensatz laden, die Daten vorverarbeiten, den Datensatz in Trainings- und Testsets unterteilen und dann zwei verschiedene Klassifizierungstechniken (K-Nearest Neighbors und Logistische Regression) verwenden, um die Ziffern zu klassifizieren. Schließlich werden wir die Genauigkeit beider Techniken vergleichen.
VM-Tipps
Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Lade den Digits-Datensatz
Wir beginnen, indem wir den Digits-Datensatz mit der Funktion load_digits aus scikit-learn laden. Diese Funktion gibt zwei Arrays zurück: X_digits, das die Eingabedaten enthält, und y_digits, das die Ziel-Labels enthält.
from sklearn import datasets
X_digits, y_digits = datasets.load_digits(return_X_y=True)
Vorverarbeiten der Daten
Anschließend werden wir die Daten vorverarbeiten, indem wir die Merkmale auf einen Wertebereich von [0, 1] skalieren, indem wir den Maximalwert der Daten verwenden. Dies kann durch Teilen der Eingabedaten durch den Maximalwert der Eingabedaten erreicht werden.
X_digits = X_digits / X_digits.max()
Teilen Sie den Datensatz in Trainings- und Testsets auf
Als nächstes werden wir den Datensatz mit der Funktion train_test_split von scikit-learn in Trainings- und Testsets aufteilen. Wir werden 90% der Daten für das Training und 10% für das Testen verwenden.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_digits, y_digits, test_size=0.1, random_state=42)
Trainieren und Testen des K-Nearest Neighbors-Klassifizierers
Wir werden jetzt einen K-Nearest Neighbors (KNN)-Klassifizierer mit der Funktion KNeighborsClassifier von scikit-learn trainieren und ihn auf dem Testset testen. Anschließend werden wir die Genauigkeit des Klassifizierers ausgeben.
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_score = knn.score(X_test, y_test)
print("KNN score: %f" % knn_score)
Trainieren und Testen des Logistischen Regressionsmodells
Wir werden jetzt ein Logistisches Regressionsmodell mit der Funktion LogisticRegression von scikit-learn trainieren und es auf dem Testset testen. Anschließend werden wir die Genauigkeit des Modells ausgeben.
from sklearn.linear_model import LogisticRegression
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train, y_train)
logistic_score = logistic.score(X_test, y_test)
print("Logistic Regression score: %f" % logistic_score)
Vergleichen der Genauigkeit beider Klassifizierer
Schließlich werden wir die Genauigkeit beider Klassifizierer vergleichen, indem wir die Genauigkeitsscores beider Klassifizierer ausgeben.
print("KNN score: %f" % knn_score)
print("Logistic Regression score: %f" % logistic_score)
Zusammenfassung
In diesem Lab haben wir gelernt, wie man Klassifizierungstechniken auf dem Digits-Datensatz mit scikit-learn anwendet. Wir haben den Datensatz geladen, die Daten vorverarbeitet, den Datensatz in Trainings- und Testsets unterteilt und dann zwei verschiedene Klassifizierer (K-Nearest Neighbors und Logistisches Regressionsmodell) auf dem Testset trainiert und getestet. Schließlich haben wir die Genauigkeit beider Klassifizierer verglichen.