Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Gridsearchcv | Modellering
ML Introduktion med Scikit-learn

bookGridsearchcv

Nu er det tid til at forsøge at forbedre modellens ydeevne! Dette gøres ved at finde de bedste hyperparametre tilpasset vores opgave.

Denne proces kaldes hyperparameter tuning. Standardmetoden er at afprøve forskellige værdier for hyperparametre og beregne en krydsvalideringsscore for dem. Derefter vælges blot den værdi, der giver den bedste score.

Denne proces kan udføres ved hjælp af GridSearchCV-klassen fra modulet sklearn.model_selection.

Ved oprettelse af et GridSearchCV-objekt skal vi angive modellen og parametergitteret (samt eventuelt scoring og antal fold). Parametergitteret (param_grid) er en dictionary, der indeholder alle de hyperparameterkonfigurationer, vi ønsker at afprøve. For eksempel vil param_grid={'n_neighbors': [1, 3, 5, 7]} afprøve værdierne 1, 3, 5 og 7 som antal naboer.

Dernæst trænes modellen ved hjælp af .fit(X, y)-metoden. Når træningen er færdig, kan du identificere den model, der klarede sig bedst — den med den højeste krydsvalideringsscore, typisk baseret på accuracy — ved at tilgå attributten .best_estimator_.

For at gennemgå denne topmodells krydsvalideringsscore henvises til attributten .best_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) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Det næste trin vil være at tage best_estimator_ og træne den på hele datasættet, da vi allerede ved, at den har de bedste parametre (ud af dem vi har prøvet), og vi kender dens score. Dette trin er så indlysende, at GridSearchCV gør det som standard.

Så objektet (grid_search i vores eksempel) bliver en trænet model med de bedste parametre. Vi kan nu bruge dette objekt til at forudsige eller evaluere. Derfor har GridSearchCV metoderne .predict() og .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

Når du har trænet et GridSearchCV-objekt, kan du bruge det til at lave forudsigelser ved hjælp af .predict()-metoden. Er det korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.13

bookGridsearchcv

Stryg for at vise menuen

Nu er det tid til at forsøge at forbedre modellens ydeevne! Dette gøres ved at finde de bedste hyperparametre tilpasset vores opgave.

Denne proces kaldes hyperparameter tuning. Standardmetoden er at afprøve forskellige værdier for hyperparametre og beregne en krydsvalideringsscore for dem. Derefter vælges blot den værdi, der giver den bedste score.

Denne proces kan udføres ved hjælp af GridSearchCV-klassen fra modulet sklearn.model_selection.

Ved oprettelse af et GridSearchCV-objekt skal vi angive modellen og parametergitteret (samt eventuelt scoring og antal fold). Parametergitteret (param_grid) er en dictionary, der indeholder alle de hyperparameterkonfigurationer, vi ønsker at afprøve. For eksempel vil param_grid={'n_neighbors': [1, 3, 5, 7]} afprøve værdierne 1, 3, 5 og 7 som antal naboer.

Dernæst trænes modellen ved hjælp af .fit(X, y)-metoden. Når træningen er færdig, kan du identificere den model, der klarede sig bedst — den med den højeste krydsvalideringsscore, typisk baseret på accuracy — ved at tilgå attributten .best_estimator_.

For at gennemgå denne topmodells krydsvalideringsscore henvises til attributten .best_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) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Det næste trin vil være at tage best_estimator_ og træne den på hele datasættet, da vi allerede ved, at den har de bedste parametre (ud af dem vi har prøvet), og vi kender dens score. Dette trin er så indlysende, at GridSearchCV gør det som standard.

Så objektet (grid_search i vores eksempel) bliver en trænet model med de bedste parametre. Vi kan nu bruge dette objekt til at forudsige eller evaluere. Derfor har GridSearchCV metoderne .predict() og .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

Når du har trænet et GridSearchCV-objekt, kan du bruge det til at lave forudsigelser ved hjælp af .predict()-metoden. Er det korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6
some-alt