Gridsearchcv
Nu är det dags att förbättra modellens prestanda genom att identifiera de mest lämpliga hyperparametrarna.
Denna process kallas hyperparametertuning. Den standardiserade metoden är att testa olika hyperparametervärden, beräkna korsvalideringspoängen för varje, och välja det värde som ger högst poäng.
Denna process kan utföras med hjälp av klassen GridSearchCV
från modulen sklearn.model_selection
.
När du skapar ett GridSearchCV
-objekt anger du modellen och parametergriden (param_grid
), och kan valfritt specificera utvärderingsmetrik och antal vikningar. Parametergriden är en ordbok med hyperparametervärden att testa. Till exempel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Denna konfiguration utvärderar modellen med 1, 3, 5 och 7 grannar.
Efter att ha initierat GridSearchCV
tränas den med .fit(X, y)
.
- Bästa modellen (högsta korsvalideringspoäng) kan nås via
.best_estimator_
. - Motsvarande korsvalideringspoäng kan ses genom
.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ästa steg är att ta best_estimator_
och träna den på hela datasettet, eftersom den redan har identifierats med de bästa parametrarna. Detta steg utförs automatiskt av GridSearchCV
.
Som ett resultat blir grid_search
-objektet i sig en tränad modell med optimala parametrar. Den kan användas direkt för prediktion och utvärdering via metoderna .predict()
och .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))
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.13
Gridsearchcv
Svep för att visa menyn
Nu är det dags att förbättra modellens prestanda genom att identifiera de mest lämpliga hyperparametrarna.
Denna process kallas hyperparametertuning. Den standardiserade metoden är att testa olika hyperparametervärden, beräkna korsvalideringspoängen för varje, och välja det värde som ger högst poäng.
Denna process kan utföras med hjälp av klassen GridSearchCV
från modulen sklearn.model_selection
.
När du skapar ett GridSearchCV
-objekt anger du modellen och parametergriden (param_grid
), och kan valfritt specificera utvärderingsmetrik och antal vikningar. Parametergriden är en ordbok med hyperparametervärden att testa. Till exempel:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Denna konfiguration utvärderar modellen med 1, 3, 5 och 7 grannar.
Efter att ha initierat GridSearchCV
tränas den med .fit(X, y)
.
- Bästa modellen (högsta korsvalideringspoäng) kan nås via
.best_estimator_
. - Motsvarande korsvalideringspoäng kan ses genom
.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ästa steg är att ta best_estimator_
och träna den på hela datasettet, eftersom den redan har identifierats med de bästa parametrarna. Detta steg utförs automatiskt av GridSearchCV
.
Som ett resultat blir grid_search
-objektet i sig en tränad modell med optimala parametrar. Den kan användas direkt för prediktion och utvärdering via metoderna .predict()
och .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))
Tack för dina kommentarer!