Gridsearchcv
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_
.
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_)
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()
.
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))
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
Gridsearchcv
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_
.
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_)
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()
.
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))
Tak for dine kommentarer!