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

bookGridsearchcv

Jetzt ist es an der Zeit, die Modellleistung zu verbessern! Dies geschieht durch das Auffinden der besten Hyperparameter, die zu unserer Aufgabe passen.

Dieser Prozess wird als Hyperparameter-Optimierung bezeichnet. Der Standardansatz besteht darin, verschiedene Hyperparameterwerte auszuprobieren und für diese einen Kreuzvalidierungswert zu berechnen. Anschließend wird der Wert gewählt, der das beste Ergebnis liefert.

Dieser Prozess kann mit der Klasse GridSearchCV aus dem Modul sklearn.model_selection durchgeführt werden.

Beim Erstellen eines GridSearchCV-Objekts müssen das Modell und das Parameter-Raster (optional auch die Bewertungsfunktion und die Anzahl der Folds) übergeben werden. Das Parameter-Raster (param_grid) ist ein Dictionary, das alle Hyperparameter-Konfigurationen enthält, die getestet werden sollen. Zum Beispiel testet param_grid={'n_neighbors': [1, 3, 5, 7]} die Werte 1, 3, 5 und 7 als Anzahl der Nachbarn.

Anschließend wird das Modell mit der Methode .fit(X, y) trainiert. Nach Abschluss des Trainings kann das Modell mit der besten Leistung — also dem höchsten Kreuzvalidierungswert, typischerweise basierend auf der Genauigkeit — über das Attribut .best_estimator_ abgerufen werden.

Um den Kreuzvalidierungswert dieses Modells einzusehen, kann das Attribut .best_score_ verwendet werden.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV 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'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Der nächste Schritt besteht darin, den best_estimator_ zu verwenden und ihn auf dem gesamten Datensatz zu trainieren, da bereits bekannt ist, dass er die besten Parameter (von den getesteten) besitzt und seine Bewertung bekannt ist. Dieser Schritt ist so offensichtlich, dass GridSearchCV ihn standardmäßig durchführt.

Das Objekt (grid_search in unserem Beispiel) wird somit zu einem trainierten Modell mit den besten Parametern. Dieses Objekt kann nun für Vorhersagen oder Auswertungen verwendet werden. Aus diesem Grund verfügt GridSearchCV über die Methoden .predict() und .score().

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV 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'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Evaluate the grid_search on the training set # It is done only to show that .score() method works, evaluating on training set is not reliable. print(grid_search.score(X, y))
copy
question mark

Nachdem ein GridSearchCV-Objekt trainiert wurde, kann es zur Vorhersage mit der Methode .predict() verwendet werden. Ist dies korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6

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

bookGridsearchcv

Swipe um das Menü anzuzeigen

Jetzt ist es an der Zeit, die Modellleistung zu verbessern! Dies geschieht durch das Auffinden der besten Hyperparameter, die zu unserer Aufgabe passen.

Dieser Prozess wird als Hyperparameter-Optimierung bezeichnet. Der Standardansatz besteht darin, verschiedene Hyperparameterwerte auszuprobieren und für diese einen Kreuzvalidierungswert zu berechnen. Anschließend wird der Wert gewählt, der das beste Ergebnis liefert.

Dieser Prozess kann mit der Klasse GridSearchCV aus dem Modul sklearn.model_selection durchgeführt werden.

Beim Erstellen eines GridSearchCV-Objekts müssen das Modell und das Parameter-Raster (optional auch die Bewertungsfunktion und die Anzahl der Folds) übergeben werden. Das Parameter-Raster (param_grid) ist ein Dictionary, das alle Hyperparameter-Konfigurationen enthält, die getestet werden sollen. Zum Beispiel testet param_grid={'n_neighbors': [1, 3, 5, 7]} die Werte 1, 3, 5 und 7 als Anzahl der Nachbarn.

Anschließend wird das Modell mit der Methode .fit(X, y) trainiert. Nach Abschluss des Trainings kann das Modell mit der besten Leistung — also dem höchsten Kreuzvalidierungswert, typischerweise basierend auf der Genauigkeit — über das Attribut .best_estimator_ abgerufen werden.

Um den Kreuzvalidierungswert dieses Modells einzusehen, kann das Attribut .best_score_ verwendet werden.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV 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'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Der nächste Schritt besteht darin, den best_estimator_ zu verwenden und ihn auf dem gesamten Datensatz zu trainieren, da bereits bekannt ist, dass er die besten Parameter (von den getesteten) besitzt und seine Bewertung bekannt ist. Dieser Schritt ist so offensichtlich, dass GridSearchCV ihn standardmäßig durchführt.

Das Objekt (grid_search in unserem Beispiel) wird somit zu einem trainierten Modell mit den besten Parametern. Dieses Objekt kann nun für Vorhersagen oder Auswertungen verwendet werden. Aus diesem Grund verfügt GridSearchCV über die Methoden .predict() und .score().

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV 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'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Evaluate the grid_search on the training set # It is done only to show that .score() method works, evaluating on training set is not reliable. print(grid_search.score(X, y))
copy
question mark

Nachdem ein GridSearchCV-Objekt trainiert wurde, kann es zur Vorhersage mit der Methode .predict() verwendet werden. Ist dies korrekt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
some-alt