Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Modellbewertung | Modellierung
ML-Einführung Mit Scikit-Learn

bookModellbewertung

Beim Erstellen eines prädiktiven Modells ist es entscheidend, die Leistungsfähigkeit des Modells zu bestimmen, bevor es für reale Vorhersagen eingesetzt wird.

Die Modellevaluierung misst, wie genau das Modell Vorhersagen trifft. Die Methode .score() liefert diese Bewertung.

Die Leistungsbewertung auf dem Trainingsdatensatz ist irreführend, da das Modell auf bereits bekannten Daten in der Regel bessere Ergebnisse erzielt. Um eine realistische Einschätzung zu erhalten, muss die Bewertung auf unbekannten Daten erfolgen.

Formal besteht das Ziel darin, ein Modell zu erstellen, das gut generalisiert.

Note
Definition

Generalisierung bezeichnet die Fähigkeit eines Modells, auch auf neuen, unbekannten Daten effektiv zu arbeiten, also über die Daten hinaus, auf denen es trainiert wurde. Sie misst, wie genau die Vorhersagen eines Modells auf reale Anwendungsszenarien außerhalb des Trainingsdatensatzes übertragbar sind.

Dies kann erreicht werden, indem der Datensatz zufällig in zwei Teile aufgeteilt wird: ein Trainingsdatensatz zum Anpassen des Modells und ein Testdatensatz zur Bewertung.

Das Modell mit dem Trainingsdatensatz trainieren und anschließend mit dem Testdatensatz evaluieren:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Für eine zufällige Aufteilung der Daten die Funktion train_test_split() aus dem Modul sklearn.model_selection verwenden.

Die Größe des Testdatensatzes hängt typischerweise vom Datensatz ab: 25–40 % bei kleinen Datensätzen, 10–30 % bei mittleren und weniger als 10 % bei großen Datensätzen.

In diesem Beispiel mit nur 342 Instanzen (ein kleiner Datensatz) werden 33 % für den Testdatensatz verwendet:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Hier stehen X_train und y_train für den Trainingsdatensatz, während X_test und y_test den Testdatensatz repräsentieren.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Das Modell wird nun mit dem Trainingsdatensatz mittels .fit(X_train, y_train) trainiert und mit dem Testdatensatz mittels .score(X_test, y_test) evaluiert.

Da train_test_split() die Daten zufällig aufteilt, unterscheiden sich Trainings- und Testdatensatz bei jedem Durchlauf, was zu unterschiedlichen Ergebnissen führt. Bei einem größeren Datensatz würden diese Werte stabiler werden.

question mark

Um eine 67%/33% Aufteilung zwischen Training und Test zu erreichen, nehmen wir ein Drittel der ersten Zeilen als Testdatensatz und den Rest als Trainingsdatensatz. Ist diese Aussage korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.13

bookModellbewertung

Swipe um das Menü anzuzeigen

Beim Erstellen eines prädiktiven Modells ist es entscheidend, die Leistungsfähigkeit des Modells zu bestimmen, bevor es für reale Vorhersagen eingesetzt wird.

Die Modellevaluierung misst, wie genau das Modell Vorhersagen trifft. Die Methode .score() liefert diese Bewertung.

Die Leistungsbewertung auf dem Trainingsdatensatz ist irreführend, da das Modell auf bereits bekannten Daten in der Regel bessere Ergebnisse erzielt. Um eine realistische Einschätzung zu erhalten, muss die Bewertung auf unbekannten Daten erfolgen.

Formal besteht das Ziel darin, ein Modell zu erstellen, das gut generalisiert.

Note
Definition

Generalisierung bezeichnet die Fähigkeit eines Modells, auch auf neuen, unbekannten Daten effektiv zu arbeiten, also über die Daten hinaus, auf denen es trainiert wurde. Sie misst, wie genau die Vorhersagen eines Modells auf reale Anwendungsszenarien außerhalb des Trainingsdatensatzes übertragbar sind.

Dies kann erreicht werden, indem der Datensatz zufällig in zwei Teile aufgeteilt wird: ein Trainingsdatensatz zum Anpassen des Modells und ein Testdatensatz zur Bewertung.

Das Modell mit dem Trainingsdatensatz trainieren und anschließend mit dem Testdatensatz evaluieren:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Für eine zufällige Aufteilung der Daten die Funktion train_test_split() aus dem Modul sklearn.model_selection verwenden.

Die Größe des Testdatensatzes hängt typischerweise vom Datensatz ab: 25–40 % bei kleinen Datensätzen, 10–30 % bei mittleren und weniger als 10 % bei großen Datensätzen.

In diesem Beispiel mit nur 342 Instanzen (ein kleiner Datensatz) werden 33 % für den Testdatensatz verwendet:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Hier stehen X_train und y_train für den Trainingsdatensatz, während X_test und y_test den Testdatensatz repräsentieren.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Das Modell wird nun mit dem Trainingsdatensatz mittels .fit(X_train, y_train) trainiert und mit dem Testdatensatz mittels .score(X_test, y_test) evaluiert.

Da train_test_split() die Daten zufällig aufteilt, unterscheiden sich Trainings- und Testdatensatz bei jedem Durchlauf, was zu unterschiedlichen Ergebnissen führt. Bei einem größeren Datensatz würden diese Werte stabiler werden.

question mark

Um eine 67%/33% Aufteilung zwischen Training und Test zu erreichen, nehmen wir ein Drittel der ersten Zeilen als Testdatensatz und den Rest als Trainingsdatensatz. Ist diese Aussage korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
some-alt