Gridsearchcv
Nun ist es an der Zeit, die Modellleistung zu verbessern, indem die am besten geeigneten Hyperparameter identifiziert werden.
Dieser Prozess wird als Hyperparameter-Optimierung bezeichnet. Der Standardansatz besteht darin, verschiedene Hyperparameterwerte zu testen, für jeden den Kreuzvalidierungswert zu berechnen und den Wert auszuwählen, der den höchsten Wert erzielt.
Dieser Prozess kann mit der Klasse GridSearchCV
aus dem Modul sklearn.model_selection
durchgeführt werden.
Beim Erstellen eines GridSearchCV
-Objekts werden das Modell und das Parameter-Raster (param_grid
) angegeben; optional können auch die Bewertungsmetrik und die Anzahl der Folds festgelegt werden. Das Parameter-Raster ist ein Dictionary mit den zu testenden Hyperparameterwerten. Zum Beispiel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Mit dieser Konfiguration wird das Modell mit 1, 3, 5 und 7 Nachbarn bewertet.
Nach der Initialisierung von GridSearchCV
wird das Training mit .fit(X, y)
durchgeführt.
- Das beste Modell (höchster Kreuzvalidierungswert) ist über
.best_estimator_
zugänglich. - Der entsprechende Kreuzvalidierungswert kann über
.best_score_
eingesehen 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_
auf dem gesamten Datensatz zu trainieren, da dieser bereits als Modell mit den besten Parametern identifiziert wurde. Dieser Schritt wird von GridSearchCV
automatisch durchgeführt.
Dadurch wird das grid_search
-Objekt selbst zu einem trainierten Modell mit optimalen Parametern. Es kann direkt für Vorhersagen und Auswertungen über die Methoden .predict()
und .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) # 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
Nun ist es an der Zeit, die Modellleistung zu verbessern, indem die am besten geeigneten Hyperparameter identifiziert werden.
Dieser Prozess wird als Hyperparameter-Optimierung bezeichnet. Der Standardansatz besteht darin, verschiedene Hyperparameterwerte zu testen, für jeden den Kreuzvalidierungswert zu berechnen und den Wert auszuwählen, der den höchsten Wert erzielt.
Dieser Prozess kann mit der Klasse GridSearchCV
aus dem Modul sklearn.model_selection
durchgeführt werden.
Beim Erstellen eines GridSearchCV
-Objekts werden das Modell und das Parameter-Raster (param_grid
) angegeben; optional können auch die Bewertungsmetrik und die Anzahl der Folds festgelegt werden. Das Parameter-Raster ist ein Dictionary mit den zu testenden Hyperparameterwerten. Zum Beispiel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Mit dieser Konfiguration wird das Modell mit 1, 3, 5 und 7 Nachbarn bewertet.
Nach der Initialisierung von GridSearchCV
wird das Training mit .fit(X, y)
durchgeführt.
- Das beste Modell (höchster Kreuzvalidierungswert) ist über
.best_estimator_
zugänglich. - Der entsprechende Kreuzvalidierungswert kann über
.best_score_
eingesehen 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_
auf dem gesamten Datensatz zu trainieren, da dieser bereits als Modell mit den besten Parametern identifiziert wurde. Dieser Schritt wird von GridSearchCV
automatisch durchgeführt.
Dadurch wird das grid_search
-Objekt selbst zu einem trainierten Modell mit optimalen Parametern. Es kann direkt für Vorhersagen und Auswertungen über die Methoden .predict()
und .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) # 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!