Ziffernklassifizierung mit Scikit-Learn

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.