sklearn.model_selection.GridSearchCV

class sklearn.model_selection.GridSearchCV

Búsqueda exhaustiva sobre los valores de los parámetros especificados para un estimador.

Los miembros importantes son fit, predict.

GridSearchCV implementa un método «fit» y otro «score». También implementa «score_samples», «predict», «predict_proba», «decision_function», «transform» e «inverse_transform» si están implementados en el estimador utilizado.

Los parámetros del estimador utilizado para aplicar estos métodos se optimizan mediante una búsqueda en cuadrícula con validación cruzada sobre una cuadrícula de parámetros.

Más información en el Manual de usuario.

Parámetros
estimatorobjeto estimator.

Se supone que implementa la interfaz del estimador de scikit-learn. O bien el estimador necesita proporcionar una función score, o se debe pasar scoring.

param_griddict o lista de diccionarios

Diccionario con nombres de parámetros (str) como claves y listas de ajustes de parámetros a probar como valores, o una lista de tales diccionarios, en cuyo caso se exploran las cuadrículas abarcadas por cada diccionario de la lista. Esto permite buscar sobre cualquier secuencia de ajustes de parámetros.

scoringstr, callable, list/tuple or dict, default=None

A single str (see El parámetro scoring: definir las reglas de evaluación del modelo) or a callable (see Definir tu estrategia de puntuación a partir de funciones métricas) to evaluate the predictions on the test set.

For evaluating multiple metrics, either give a list of (unique) strings or a dict with names as keys and callables as values.

NOTE that when using custom scorers, each scorer should return a single value. Metric functions returning a list/array of values can be wrapped into multiple scorers that return one value each.

Ver Especificar múltiples métricas para la evaluación para un ejemplo.

If None, the estimator’s score method is used.

n_jobsint, default=None

Número de trabajos a ejecutar en paralelo. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa utilizar todos los procesadores. Ver Glosario para más detalles.

Distinto en la versión v0.20: El valor predeterminado de n_jobs cambió de 1 a None

pre_dispatchint, o str, default=n_jobs

Controla el número de trabajos que se envían durante la ejecución en paralelo. Reducir este número puede ser útil para evitar una explosión de consumo de memoria cuando se envían más trabajos de los que las CPUs pueden procesar. Este parámetro puede ser:

  • None, en cuyo caso todos los trabajos se crean y generan inmediatamente. Utilícelo para trabajos ligeros y de ejecución rápida, para evitar retrasos debidos a la generación de trabajos bajo demanda

  • Un int, que da el número exacto de trabajos totales que se generan

  • Una str, que da una expresión como una función de n_jobs, como en “2*n_jobs”

cventero, generador de validación cruzada o un iterable, default=None

Determina la estrategia de división de validación cruzada. Las posibles entradas para cv son:

  • None, para utilizar la validación cruzada de 5-pliegues por defecto,

  • número entero, para especificar el número de pliegues en un (Stratified)KFold,

  • separador de CV,

  • Un iterable que produce divisiones (train, test) como arreglos de índices.

Para entradas enteras/None, si el estimador es un clasificador e y es binario o multiclase, se utiliza StratifiedKFold. En todos los demás casos, se utiliza KFold.

Consulta el Manual de usuario para las diversas estrategias de validación cruzada que pueden ser utilizadas aquí.

Distinto en la versión 0.22: El valor predeterminado de cv si es None cambió de 3-pliegues a 5-pliegues.

refitbooleano, cadena, o invocable, default=True

Reajusta un estimador utilizando los mejores parámetros encontrados en todo el conjunto de datos.

Para la evaluación de múltiples métricas, debe ser una str que denote el calificador que se utilizaría para encontrar los mejores parámetros para reajustar el estimador al final.

Cuando hay consideraciones distintas de la puntuación máxima en la elección de un mejor estimador, refit se puede establecer en una función que devuelve el best_index_ seleccionado dado cv_results_. En ese caso, los atributos best_estimator_ y best_params_ se establecerán de acuerdo con el best_index_ devuelto, mientras que el atributo best_score_ no estará disponible.

El estimador reajustado está disponible en el atributo best_estimator_ y permite utilizar predict directamente en esta instancia GridSearchCV.

También para la evaluación de múltiples métricas, los atributos best_index_, best_score_ y best_params_ sólo estarán disponibles si se establece refit y todos ellos se determinarán con respecto a este puntuador específico.

Ver el parámetro scoring para saber más sobre la evaluación de múltiples métricas.

Distinto en la versión 0.20: Se ha añadido soporte para callable.

verboseint

Controla la verbosidad: cuanto más alta, más mensajes.

  • >1 : se muestra el tiempo de cálculo para cada pliegue y parámetro candidato;

  • >2 : también se muestra la puntuación;

  • >3 : los índices de los pliegues y de los parámetros candidatos también se muestran junto con la hora de inicio del cálculo.

error_score“raise” o numeric, default=np.nan

Valor a asignar a la puntuación si se produce un error en el ajuste del estimador. Si se establece como “raise”, el error se eleva. Si se da un valor numérico, se eleva FitFailedWarning. Este parámetro no afecta al paso de reajuste, que siempre elevará el error.

return_train_scorebool, default=False

Si es False, el atributo cv_results_ no incluirá las puntuaciones de entrenamiento. El cálculo de las puntuaciones de entrenamiento se utiliza para obtener información sobre el impacto de los diferentes ajustes de los parámetros en el equilibrio entre sobreajuste/subajuste. Sin embargo, calcular las puntuaciones en el conjunto de entrenamiento puede ser costoso computacionalmente y no es estrictamente necesario para seleccionar los parámetros que producen el mejor rendimiento de generalización.

Nuevo en la versión 0.19.

Distinto en la versión 0.21: El valor predeterminado se ha cambiado de True a False

Atributos
cv_results_dict de numpy (masked) ndarrays

Un dict con claves como cabeceras de columna y valores como columnas, que puede ser importado en un DataFrame de pandas.

Por ejemplo, la siguiente tabla

param_kernel

param_gamma

param_degree

split0_test_score

rank_t…

“poly”

2

0.80

2

“poly”

3

0.70

4

“rbf”

0.1

0.80

3

“rbf”

0.2

0.93

1

será representado por un dict cv_results_ de:

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                             mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                            mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                             mask = [False False  True  True]...),
'split0_test_score'  : [0.80, 0.70, 0.80, 0.93],
'split1_test_score'  : [0.82, 0.50, 0.70, 0.78],
'mean_test_score'    : [0.81, 0.60, 0.75, 0.85],
'std_test_score'     : [0.01, 0.10, 0.05, 0.08],
'rank_test_score'    : [2, 4, 3, 1],
'split0_train_score' : [0.80, 0.92, 0.70, 0.93],
'split1_train_score' : [0.82, 0.55, 0.70, 0.87],
'mean_train_score'   : [0.81, 0.74, 0.70, 0.90],
'std_train_score'    : [0.01, 0.19, 0.00, 0.03],
'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00, 0.01],
'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
}

NOTA

La clave 'params se utiliza para almacenar una lista de diccionarios (dicts) de configuración de parámetros para todos los candidatos a parámetros.

La mean_fit_time, std_fit_time, mean_score_time y std_score_time están todas en segundos.

Para la evaluación multimétrica, las puntuaciones de todos los puntuadores están disponibles en el diccionario cv_results_ en las claves que terminan con el nombre de ese puntuador ('_<scorer_name>') en lugar de '_score' mostradas anteriormente. (“split0_test_precision”, “mean_train_precision” etc.)

best_estimator_estimator

Estimador que fue elegido por la búsqueda, es decir, el estimador que dio la mayor puntuación (o la menor pérdida si se especifica) en los datos dejados de lado. No está disponible si refit=False.

Ver el parámetro refit para más información sobre los valores permitidos.

best_score_float

Puntuación media de validación cruzada del mejor estimador

Para la evaluación multimétrica, sólo está presente si se especifica refit.

Este atributo no está disponible si refit es una función.

best_params_dict

Configuración del parámetro que dio los mejores resultados en los datos retenidos.

Para la evaluación multimétrica, sólo está presente si se especifica refit.

best_index_int

El índice (de los arreglos cv_results_) que corresponde a la mejor configuración del parámetro candidato.

El diccionario en search.cv_results_['params'][search.best_index_] da la configuración de parámetros para el mejor modelo, que da la puntuación media más alta (search.best_score_).

Para la evaluación multimétrica, sólo está presente si se especifica refit.

scorer_function o un dict

Función de puntuación utilizada en los datos retenidos para elegir los mejores parámetros del modelo.

Para la evaluación multimétrica, este atributo contiene el diccionario validado scoring que mapea la clave del puntuador (scorer) al puntuador invocable (callable).

n_splits_int

El número de divisiones de validación cruzada (pliegues/iteraciones).

refit_time_float

Segundos utilizados para reajustar el mejor modelo en todo el conjunto de datos.

Sólo está presente si refit no es False.

Nuevo en la versión 0.20.

multimetric_bool

Si los puntuadores calculan o no varias métricas.

Ver también

ParameterGrid

Genera todas las combinaciones de una cuadrícula de hiperparámetros.

train_test_split

Función de utilidad para dividir los datos en un conjunto de desarrollo que puede ser utilizado para ajustar una instancia de GridSearchCV y un conjunto de evaluación para su evaluación final.

sklearn.metrics.make_scorer

Hace un puntuador a partir de una métrica de rendimiento o una función de pérdida.

Notas

Los parámetros seleccionados son los que maximizan la puntuación de los datos omitidos, a menos que se pase una puntuación explícita, en cuyo caso se utiliza en su lugar.

Si n_jobs se estableció en un valor superior a uno, los datos se copian para cada punto en la cuadrícula (y no n_jobs veces). Esto se hace por razones de eficiencia si los trabajos individuales toman muy poco tiempo, pero puede dar lugar a errores si el conjunto de datos es grande y no hay suficiente memoria disponible. Una solución en este caso es establecer pre_dispatch. Entonces, la memoria se copia sólo pre_dispatch muchas veces. Un valor razonable para pre_dispatch es 2 * n_jobs.

Ejemplos

>>> from sklearn import svm, datasets
>>> from sklearn.model_selection import GridSearchCV
>>> iris = datasets.load_iris()
>>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)
GridSearchCV(estimator=SVC(),
             param_grid={'C': [1, 10], 'kernel': ('linear', 'rbf')})
>>> sorted(clf.cv_results_.keys())
['mean_fit_time', 'mean_score_time', 'mean_test_score',...
 'param_C', 'param_kernel', 'params',...
 'rank_test_score', 'split0_test_score',...
 'split2_test_score', ...
 'std_fit_time', 'std_score_time', 'std_test_score']

Métodos

decision_function

Llama a decision_function en el estimador con los mejores parámetros encontrados.

fit

Ejecuta el ajuste con todos los conjuntos de parámetros.

get_params

Obtiene los parámetros para este estimador.

inverse_transform

Llama a inverse_transform en el estimador con los mejores parámetros encontrados.

predict

Llama a predict en el estimador con los mejores parámetros encontrados.

predict_log_proba

Llama a predict_log_proba en el estimador con los mejores parámetros encontrados.

predict_proba

Llama a predict_proba en el estimador con los mejores parámetros encontrados.

score

Devuelve la puntuación en los datos dados, si el estimador ha sido reajustado.

score_samples

Llama a score_samples en el estimador con los mejores parámetros encontrados.

set_params

Establece los parámetros de este estimador.

transform

Llama a transform en el estimador con los mejores parámetros encontrados.

decision_function()

Llama a decision_function en el estimador con los mejores parámetros encontrados.

Sólo está disponible si refit=True y el estimador subyacente soporta decision_function.

Parámetros
Xindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

fit()

Ejecuta el ajuste con todos los conjuntos de parámetros.

Parámetros
Xarray-like de forma (n_samples, n_features)

Vector de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yarray-like de forma (n_samples, n_output) o (n_samples,), default=None

Objetivo relativo a X para la clasificación o la regresión; None para el aprendizaje no supervisado.

groupsarray-like de forma (n_samples,) default=None

Etiquetas de grupo para las muestras utilizadas al dividir el conjunto de datos en conjunto de entrenamiento/prueba. Sólo se utiliza junto con una instancia de cv «Group» (por ejemplo, GroupKFold).

**fit_paramsdict de str -> object

Parámetros pasados al método fit del estimador

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

inverse_transform()

Llama a inverse_transform en el estimador con los mejores parámetros encontrados.

Sólo está disponible si el estimador subyacente implementa inverse_transform y refit=True.

Parámetros
Xtindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

predict()

Llama a predict en el estimador con los mejores parámetros encontrados.

Sólo está disponible si refit=True y el estimador subyacente soporta predict.

Parámetros
Xindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

predict_log_proba()

Llama a predict_log_proba en el estimador con los mejores parámetros encontrados.

Sólo está disponible si refit=True y el estimador subyacente soporta predict_log_proba.

Parámetros
Xindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

predict_proba()

Llama a predict_proba en el estimador con los mejores parámetros encontrados.

Sólo está disponible si refit=True y el estimador subyacente soporta predict_proba.

Parámetros
Xindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

score()

Devuelve la puntuación en los datos dados, si el estimador ha sido reajustado.

Se utiliza la puntuación definida por scoring cuando se proporciona, y el método best_estimator_.score en caso contrario.

Parámetros
Xarray-like de forma (n_samples, n_features)

Datos de entrada, donde n_samples es el número de muestras y n_features es el número de características.

yarray-like de forma (n_samples, n_output) o (n_samples,), default=None

Objetivo relativo a X para la clasificación o la regresión; None para el aprendizaje no supervisado.

Devuelve
scorefloat
score_samples()

Llama a score_samples en el estimador con los mejores parámetros encontrados.

Sólo está disponible si refit=True y el estimador subyacente soporta score_samples.

Nuevo en la versión 0.24.

Parámetros
Xiterable

Datos para predecir. Deben cumplir los requisitos de entrada del estimador subyacente.

Devuelve
y_scorendarray de forma (n_samples,)
set_params()

Establece los parámetros de este estimador.

El método funciona tanto con estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

transform()

Llama a transform en el estimador con los mejores parámetros encontrados.

Sólo está disponible si el estimador subyacente soporta transform y refit=True.

Parámetros
Xindexable, longitud n_samples

Debe cumplir los supuestos de entrada del estimador subyacente.

Ejemplos utilizando sklearn.model_selection.GridSearchCV