Gridsearchcv
Nu er det tid til at forbedre modellens ydeevne ved at identificere de mest egnede hyperparametre.
Denne proces kaldes hyperparameter-tuning. Den standardiserede tilgang er at teste forskellige hyperparameterværdier, beregne krydsvalideringsscoren for hver, og vælge den værdi, der giver den højeste score.
Denne proces kan udføres ved hjælp af GridSearchCV
-klassen fra modulet sklearn.model_selection
.
Når der oprettes et GridSearchCV
-objekt, angives modellen og parametergrid (param_grid
), og eventuelt specificeres scoringsmetrik og antal fold. Parametergrid er en ordbog med hyperparameterværdier, der skal testes. For eksempel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Denne konfiguration evaluerer modellen med 1, 3, 5 og 7 naboer.
Efter initialisering af GridSearchCV
trænes den med .fit(X, y)
.
- Den bedste model (højeste krydsvalideringsscore) kan tilgås via
.best_estimator_
. - Den tilsvarende krydsvalideringsscore kan ses gennem
.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_)
Næste trin er at tage best_estimator_
og træne den på hele datasættet, da den allerede er identificeret med de bedste parametre. Dette trin udføres automatisk af GridSearchCV
.
Som resultat bliver grid_search
-objektet selv en trænet model med de optimale parametre. Den kan bruges direkte til forudsigelse og evaluering via 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 forbedre modellens ydeevne ved at identificere de mest egnede hyperparametre.
Denne proces kaldes hyperparameter-tuning. Den standardiserede tilgang er at teste forskellige hyperparameterværdier, beregne krydsvalideringsscoren for hver, og vælge den værdi, der giver den højeste score.
Denne proces kan udføres ved hjælp af GridSearchCV
-klassen fra modulet sklearn.model_selection
.
Når der oprettes et GridSearchCV
-objekt, angives modellen og parametergrid (param_grid
), og eventuelt specificeres scoringsmetrik og antal fold. Parametergrid er en ordbog med hyperparameterværdier, der skal testes. For eksempel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Denne konfiguration evaluerer modellen med 1, 3, 5 og 7 naboer.
Efter initialisering af GridSearchCV
trænes den med .fit(X, y)
.
- Den bedste model (højeste krydsvalideringsscore) kan tilgås via
.best_estimator_
. - Den tilsvarende krydsvalideringsscore kan ses gennem
.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_)
Næste trin er at tage best_estimator_
og træne den på hele datasættet, da den allerede er identificeret med de bedste parametre. Dette trin udføres automatisk af GridSearchCV
.
Som resultat bliver grid_search
-objektet selv en trænet model med de optimale parametre. Den kan bruges direkte til forudsigelse og evaluering via 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!