Messung der Modellleistung

Überwachtes Lernen mit scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Messung der Modellleistung

  • Genauigkeit ist eine häufig verwendete Kennzahl bei der Klassifikation

  • Genauigkeit:

Division der Anzahl korrekter Vorhersagen durch die Gesamtzahl der Beobachtungen

Überwachtes Lernen mit scikit-learn

Messung der Modellleistung

  • Wie lässt sich die Genauigkeit messen?

  • Nutzung der Daten, die zur Anpassung des Klassifikators verwendet wurden

  • NOT: erlaubt keine Rückschlüsse auf Fähigkeit zur Verallgemeinerung

Überwachtes Lernen mit scikit-learn

Berechnung der Genauigkeit

Aufteilung von Daten in einen Trainings- und einen Testdatensatz

Überwachtes Lernen mit scikit-learn

Berechnung der Genauigkeit

Anpassung eines Klassifikators mithilfe der Trainingsdaten

Überwachtes Lernen mit scikit-learn

Berechnung der Genauigkeit

Berechnung der Genauigkeit mithilfe der Testdaten

Überwachtes Lernen mit scikit-learn

Aufteilung in Trainings-/Testdaten

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=21, stratify=y)
knn = KNeighborsClassifier(n_neighbors=6)
knn.fit(X_train, y_train)
print(knn.score(X_test, y_test))
0.8800599700149925
Überwachtes Lernen mit scikit-learn

Modellkomplexität

  • Größeres k = einfacheres Modell = mögliche Unteranpassung

  • Kleineres k = komplexeres Modell = mögliche Überanpassung

Streudiagramme zeigen die KNN-Entscheidungsgrenzen für k=1, k=9 und k=18

Überwachtes Lernen mit scikit-learn

Modellkomplexität und Über-/Unteranpassung

train_accuracies = {}
test_accuracies = {}
neighbors = np.arange(1, 26)

for neighbor in neighbors:
knn = KNeighborsClassifier(n_neighbors=neighbor)
knn.fit(X_train, y_train)
train_accuracies[neighbor] = knn.score(X_train, y_train) test_accuracies[neighbor] = knn.score(X_test, y_test)
Überwachtes Lernen mit scikit-learn

Visualisierung der Ergebnisse

plt.figure(figsize=(8, 6))
plt.title("KNN: Varying Number of Neighbors")
plt.plot(neighbors, train_accuracies.values(), label="Training Accuracy")
plt.plot(neighbors, test_accuracies.values(), label="Testing Accuracy")
plt.legend()
plt.xlabel("Number of Neighbors")
plt.ylabel("Accuracy")
plt.show()
Überwachtes Lernen mit scikit-learn

Modellkomplexitätskurve

Liniendiagramm für die Genauigkeit in Abhängigkeit von der Anzahl der Nachbarn; die Genauigkeit sowohl der Trainings- als auch der Testdaten sinkt mit ansteigendem k

Überwachtes Lernen mit scikit-learn

Modellkomplexitätskurve

Pfeil im selben Liniendiagramm zeigt auf die Stelle, bei der k=13 ist und die höchste Genauigkeit für die Testreihe liefert

Überwachtes Lernen mit scikit-learn

Lass uns üben!

Überwachtes Lernen mit scikit-learn

Preparing Video For Download...