sklearn.model_selection.HalvingGridSearchCV

class sklearn.model_selection.HalvingGridSearchCV

Busca sobre los valores de los parámetros especificados con una reducción sucesiva a la mitad.

La estrategia de búsqueda comienza a evaluar todos los candidatos con una pequeña cantidad de recursos y selecciona iterativamente los mejores candidatos, utilizando cada vez más recursos.

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

Nota

Este estimador es todavía experimental por ahora: las predicciones y la API podrían cambiar sin ningún ciclo de obsolescencia. Para utilizarlo, es necesario importar explícitamente enable_halving_search_cv:

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingGridSearchCV
Parámetros
estimatorobjeto estimador.

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 (cadena) 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.

factorint o float, default=3

El parámetro “halving”, que determina la proporción de candidatos que se seleccionan en cada iteración posterior. Por ejemplo, factor=3 significa que sólo se selecciona un tercio de los candidatos.

resource : 'n_samples' o str, default=”n_samples”“n_samples” o str, default=”n_samples”

Define el recurso que aumenta con cada iteración. Por defecto, el recurso es el número de muestras. También puede establecerse en cualquier parámetro del estimador base que acepte valores enteros positivos, por ejemplo, “n_iterations” o “n_estimators” para un estimador de potenciación de gradiente. En este caso, max_resources no puede ser “auto” y debe establecerse explícitamente.

max_resourcesint, default=”auto”

La cantidad máxima de recursos que se permite utilizar a cualquier candidato para una iteración determinada. Por defecto, se establece en n_samples cuando resource='n_samples' (predeterminado), de lo contrario se produce un error.

min_resources{“exhaust”, “smallest”} o int, default=”exhaust”

La cantidad mínima de recursos que cualquier candidato puede utilizar en una iteración determinada. Equivalentemente, define la cantidad de recursos r0 que se asigna a cada candidato en la primera iteración.

  • “smallest” es una heurística que establece r0 en un valor pequeño:
    • n_splits * 2 cuando resource='n_samples' para una regresión

      problema

    • n_classes * n_splits * 2 cuando resource='n_samples' para un

      problema de clasificación

    • 1 cuando resource != 'n_samples'

  • “exhaust” establecerá «r0» de forma que la última iteración utilice tantos recursos como sea posible. Es decir, la última iteración utilizará el mayor valor menor que max_resources que sea múltiplo de min_resources y factor. En general, el uso de “exhaust” conduce a un estimador más preciso, pero consume un poco más de tiempo.

Ten en cuenta que la cantidad de recursos utilizados en cada iteración es siempre un múltiplo de min_resources.

aggressive_eliminationbool, default=False

Esto sólo es relevante en los casos en los que no hay suficientes recursos para reducir los candidatos restantes a un máximo de factor después de la última iteración. Si es True, el proceso de búsqueda “repetirá” la primera iteración durante el tiempo necesario hasta que el número de candidatos sea lo suficientemente pequeño. Por defecto es False, lo que significa que la última iteración puede evaluar más candidatos que factor. Ver Eliminación agresiva de candidatos para más detalles.

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

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

  • 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í.

Nota

Debido a los detalles de implementación, los pliegues producidos por cv deben ser los mismos a través de múltiples llamadas a cv.split(). Para los iteradores incorporados de scikit-learn, esto se puede lograr desactivando el mezclado (shuffle=False), o estableciendo el parámetro random_state de cv a un entero.

scoringcadena de caracteres, invocable, o None, default=None

Una sola cadena (ver El parámetro scoring: definir las reglas de evaluación del modelo) o un invocable «callable» (ver Definir tu estrategia de puntuación a partir de funciones métricas) para evaluar las predicciones en el conjunto de pruebas. Si es None, se utiliza el método score del estimador.

refitbool, default=True

Si es True, reajusta un estimador utilizando los mejores parámetros encontrados en todo el conjunto de datos.

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

error_score“raise” o numeric

Valor a asignar a la puntuación (score) si se produce un error en el ajuste del estimador. Si se establece como “raise”, el error se genera. Si se da un valor numérico, se genera FitFailedWarning. Este parámetro no afecta al paso de reajuste, que siempre generará el error. Por defecto es np.nan

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.

random_stateentero, instancia de RandomState o None, default=None

Estado del generador de números pseudoaleatorios utilizado para el submuestreo del conjunto de datos cuando resources != 'n_samples'. Se ignora en caso contrario. Pase un int para una salida reproducible a través de múltiples llamadas a la función. Ver Glosario.

n_jobsint o None, 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.

verboseint

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

Atributos
n_resources_list de int

La cantidad de recursos utilizados en cada iteración.

n_candidates_list de int

El número de parámetros candidatos que se evaluaron en cada iteración.

n_remaining_candidates_int

El número de parámetros candidatos que quedan después de la última iteración. Corresponde a ceil(n_candidates[-1] / factor)

max_resources_int

El número máximo de recursos que cualquier candidato puede utilizar en una iteración determinada. Ten en cuenta que, dado que el número de recursos utilizados en cada iteración debe ser un múltiplo de min_resources_, el número real de recursos utilizados en la última iteración puede ser menor que max_resources_.

min_resources_int

La cantidad de recursos que se asignan a cada candidato en la primera iteración.

n_iterations_int

El número real de iteraciones que se ejecutaron. Es igual a n_required_iterations_ si aggressive_elimination es True. De lo contrario, es igual a min(n_possible_iterations_, n_required_iterations_).

n_possible_iterations_int

El número de iteraciones que son posibles comenzando con los recursos min_resources_ y sin superar los recursos max_resources_.

n_required_iterations_int

El número de iteraciones que se requieren para terminar con menos de factor candidatos en la última iteración, comenzando con min_resources_ recursos. Será menor que n_possible_iterations_ cuando no haya suficientes recursos.

cv_results_dict de numpy (masked) ndarrays

Un diccionario con claves como cabeceras de columna y valores como columnas, que puede ser importado en un DataFrame de pandas. Contiene mucha información para analizar los resultados de una búsqueda. Por favor, consulta el Manual de Usuario para más detalles.

best_estimator_estimator o dict

Estimador que fue elegido por la búsqueda, es decir, el estimador que dio la puntuación más alta (o la pérdida más pequeña si se especifica) en los datos omitidos. No está disponible si refit = False”.

best_score_float

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

best_params_dict

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

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_).

scorer_function o un dict

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

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.

Ver también

HalvingRandomSearchCV

Búsqueda aleatoria sobre un conjunto de parámetros utilizando la división sucesiva a la mitad.

Notas

Los parámetros seleccionados son los que maximizan la puntuación de los datos retenidos, según el parámetro de puntuación (scoring).

Ejemplos

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv  # noqa
>>> from sklearn.model_selection import HalvingGridSearchCV
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
...
>>> param_grid = {"max_depth": [3, None],
...               "min_samples_split": [5, 10]}
>>> search = HalvingGridSearchCV(clf, param_grid, resource='n_estimators',
...                              max_resources=10,
...                              random_state=0).fit(X, y)
>>> search.best_params_  
{'max_depth': None, 'min_samples_split': 10, 'n_estimators': 9}

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, 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, forma (n_samples,) o (n_samples, n_output), opcional

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 de 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.HalvingGridSearchCV