Gridsearchcv
Agora é hora de melhorar o desempenho do modelo identificando os hiperparâmetros mais adequados.
Esse processo é conhecido como ajuste de hiperparâmetros. A abordagem padrão consiste em testar diferentes valores de hiperparâmetros, calcular a pontuação de validação cruzada para cada um e selecionar o valor que produz a maior pontuação.
Esse processo pode ser realizado utilizando a classe GridSearchCV
do módulo sklearn.model_selection
.
Ao criar um objeto GridSearchCV
, forneça o modelo e o grid de parâmetros (param_grid
), podendo também especificar a métrica de avaliação e o número de folds. O grid de parâmetros é um dicionário com os valores de hiperparâmetros a serem testados. Por exemplo:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Essa configuração avalia o modelo com 1, 3, 5 e 7 vizinhos.
Após inicializar o GridSearchCV
, treine-o com .fit(X, y)
.
- O melhor modelo (maior pontuação de validação cruzada) pode ser acessado via
.best_estimator_
. - A pontuação de validação cruzada correspondente pode ser visualizada através de
.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_)
O próximo passo é utilizar o best_estimator_
e treiná-lo em todo o conjunto de dados, já que ele já foi identificado como tendo os melhores parâmetros. Esta etapa é realizada automaticamente pelo GridSearchCV
.
Como resultado, o próprio objeto grid_search
torna-se um modelo treinado com os parâmetros ideais. Ele pode ser utilizado diretamente para previsão e avaliação através dos métodos .predict()
e .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))
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
What other hyperparameters can I tune with GridSearchCV?
How do I interpret the results from GridSearchCV?
Can you explain how cross-validation works in this context?
Awesome!
Completion rate improved to 3.13
Gridsearchcv
Deslize para mostrar o menu
Agora é hora de melhorar o desempenho do modelo identificando os hiperparâmetros mais adequados.
Esse processo é conhecido como ajuste de hiperparâmetros. A abordagem padrão consiste em testar diferentes valores de hiperparâmetros, calcular a pontuação de validação cruzada para cada um e selecionar o valor que produz a maior pontuação.
Esse processo pode ser realizado utilizando a classe GridSearchCV
do módulo sklearn.model_selection
.
Ao criar um objeto GridSearchCV
, forneça o modelo e o grid de parâmetros (param_grid
), podendo também especificar a métrica de avaliação e o número de folds. O grid de parâmetros é um dicionário com os valores de hiperparâmetros a serem testados. Por exemplo:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Essa configuração avalia o modelo com 1, 3, 5 e 7 vizinhos.
Após inicializar o GridSearchCV
, treine-o com .fit(X, y)
.
- O melhor modelo (maior pontuação de validação cruzada) pode ser acessado via
.best_estimator_
. - A pontuação de validação cruzada correspondente pode ser visualizada através de
.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_)
O próximo passo é utilizar o best_estimator_
e treiná-lo em todo o conjunto de dados, já que ele já foi identificado como tendo os melhores parâmetros. Esta etapa é realizada automaticamente pelo GridSearchCV
.
Como resultado, o próprio objeto grid_search
torna-se um modelo treinado com os parâmetros ideais. Ele pode ser utilizado diretamente para previsão e avaliação através dos métodos .predict()
e .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))
Obrigado pelo seu feedback!