Búsqueda en cuadrícula con validación cruzada
Ahora es momento de mejorar el rendimiento del modelo identificando los hiperparámetros más adecuados.
Este proceso se conoce como ajuste de hiperparámetros. El enfoque estándar consiste en probar diferentes valores de hiperparámetros, calcular la puntuación de validación cruzada para cada uno y seleccionar el valor que produce la mayor puntuación.
Este proceso puede realizarse utilizando la clase GridSearchCV
del módulo sklearn.model_selection
.
Al crear un objeto GridSearchCV
, se debe proporcionar el modelo y la rejilla de parámetros (param_grid
), y opcionalmente especificar la métrica de evaluación y el número de particiones. La rejilla de parámetros es un diccionario de valores de hiperparámetros a probar. Por ejemplo:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Esta configuración evalúa el modelo con 1, 3, 5 y 7 vecinos.
Después de inicializar GridSearchCV
, se entrena con .fit(X, y)
.
- El mejor modelo (mayor puntuación de validación cruzada) se puede acceder mediante
.best_estimator_
. - La puntuación de validación cruzada correspondiente se puede consultar a travé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_)
El siguiente paso consiste en tomar el best_estimator_
y entrenarlo con todo el conjunto de datos, ya que ya se ha identificado que tiene los mejores parámetros. Este paso se realiza automáticamente mediante GridSearchCV
.
Como resultado, el propio objeto grid_search
se convierte en un modelo entrenado con los parámetros óptimos. Puede utilizarse directamente para predicción y evaluación a través de los métodos .predict()
y .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))
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Búsqueda en cuadrícula con validación cruzada
Desliza para mostrar el menú
Ahora es momento de mejorar el rendimiento del modelo identificando los hiperparámetros más adecuados.
Este proceso se conoce como ajuste de hiperparámetros. El enfoque estándar consiste en probar diferentes valores de hiperparámetros, calcular la puntuación de validación cruzada para cada uno y seleccionar el valor que produce la mayor puntuación.
Este proceso puede realizarse utilizando la clase GridSearchCV
del módulo sklearn.model_selection
.
Al crear un objeto GridSearchCV
, se debe proporcionar el modelo y la rejilla de parámetros (param_grid
), y opcionalmente especificar la métrica de evaluación y el número de particiones. La rejilla de parámetros es un diccionario de valores de hiperparámetros a probar. Por ejemplo:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Esta configuración evalúa el modelo con 1, 3, 5 y 7 vecinos.
Después de inicializar GridSearchCV
, se entrena con .fit(X, y)
.
- El mejor modelo (mayor puntuación de validación cruzada) se puede acceder mediante
.best_estimator_
. - La puntuación de validación cruzada correspondiente se puede consultar a travé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_)
El siguiente paso consiste en tomar el best_estimator_
y entrenarlo con todo el conjunto de datos, ya que ya se ha identificado que tiene los mejores parámetros. Este paso se realiza automáticamente mediante GridSearchCV
.
Como resultado, el propio objeto grid_search
se convierte en un modelo entrenado con los parámetros óptimos. Puede utilizarse directamente para predicción y evaluación a través de los métodos .predict()
y .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))
¡Gracias por tus comentarios!