Gridsearchcv
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.
123456789101112131415import 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_)
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()
.
123456789101112131415import 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))
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.13
Gridsearchcv
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.
123456789101112131415import 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_)
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()
.
123456789101112131415import 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))
Danke für Ihr Feedback!