class sklearn.model_selection.RandomizedSearchCV(estimator, param_distributions, *, n_iter=10, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch="2*n_jobs", random_state=None, error_score=nan, return_train_score=False) [source]

Búsqueda aleatoria de hiperparámetros.

RandomizedSearchCV implementa un método de “ajuste” y “puntuación”. También implementa “score_samples”, “predict”, “predict_proba”, “decision_function”, “transform” y “inverse_transform” si están implementados en el estimador utilizado.

Los parámetros del estimador utilizados para aplicar estos métodos se optimizan mediante una búsqueda con validación cruzada sobre la configuración de los parámetros.

A diferencia de GridSearchCV, no se prueban todos los valores de los parámetros, sino que se muestrea un número fijo de configuraciones de parámetros a partir de las distribuciones especificadas. El número de ajustes de parámetros que se prueban viene dado por n_iter.

Si todos los parámetros se presentan como una lista, se realiza un muestreo sin reemplazo. Si se da al menos un parámetro como distribución, se utiliza el muestreo con reemplazo. Se recomienda encarecidamente utilizar distribuciones continuas para parámetros continuos.

Leer más en el Guía del usuario.

Nuevo en la versión 0.14.

Parámetros
estimatorestimator object.

Se crea una instancia de un objeto de ese tipo para cada punto de la cuadrícula. Se supone que esto implementa la interfaz del estimador scikit-learn. Cualquiera de los estimadores debe proporcionar un score función, o scoring debe pasarse.

param_distributionsdict or list of dicts

Diccionario con nombres de parámetros (str) como claves y distribuciones o listas de parámetros para probar. Las distribuciones deben proporcionar un rvs método de muestreo (como los de scipy.stats.distributions). Si se proporciona una lista, se muestrea uniformemente. Si se proporciona una lista de dictados, primero se muestrea un dictado uniformemente, y luego se muestrea un parámetro usando ese dictado como se indicó anteriormente.

n_iterint, default=10

Número de ajustes de parámetros que se muestrean. n_iter intercambia tiempo de ejecución frente a la calidad de la solución.

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

Estrategia para evaluar el rendimiento del modelo con validación cruzada en el conjunto de prueba.

Si scoring representa una sola puntuación, se puede utilizar:

  • una sola cuerda (ver El parámetro de puntuación: definición de reglas de evaluación del modelo);
  • un invocable (ver Definición de su estrategia de puntuación a partir de funciones métricas) que devuelve un solo valor.

Si scoring representa múltiples puntajes, uno puede usar:

  • una lista o tupla de cadenas únicas;
  • un invocable que devuelve un diccionario donde las claves son los nombres de las métricas y los valores son las puntuaciones de las métricas;
  • un diccionario con nombres de métricas como claves y valores a invocables.

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

Si es Ninguno, se utiliza el método de puntuación del estimador.

n_jobsint, default=None

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

Modificado en la versión v0.20: n_jobs el valor predeterminado cambió de 1 a Ninguno

pre_dispatchint, or str, default=None

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

  • Ninguno, en cuyo caso todos los trabajos se crean y generan inmediatamente. Use esto para trabajos ligeros y de ejecución rápida, para evitar retrasos debido a la generación de trabajos bajo demanda.
  • Un int, que da el número exacto de trabajos totales que se generan
  • Un str, dando una expresión en función de n_jobs, como en ‘2 * n_jobs’
cvint, cross-validation generator or an iterable, default=None

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

  • Ninguno, para utilizar la validación cruzada 5 veces predeterminada,
  • entero, para especificar el número de pliegues en un (Stratified)KFold,
  • Divisor de CV,
  • Un rendimiento iterable (entrenamiento, prueba) se divide como matrices de índices.

Para entradas enteras / Ninguna, si el estimador es un clasificador y y es binario o multiclase, StratifiedKFold se utiliza. En todos los otros casos, KFold se utiliza.

Referir Guía del usuario para las diversas estrategias de validación cruzada que se pueden utilizar aquí.

Modificado en la versión 0.22: cv valor predeterminado si Ninguno cambió de 3 veces a 5 veces.

refitbool, str, or callable, default=True

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

Para la evaluación de múltiples métricas, esto debe ser un str que denota el marcador que se usaría para encontrar los mejores parámetros para reajustar el estimador al final.

Cuando existan consideraciones distintas a la puntuación máxima para elegir el mejor estimador, refit se puede configurar en una función que devuelva el seleccionado best_index_ Dado que cv_results. En ese caso, el best_estimator_ y best_params_ se establecerá de acuerdo con la devolución best_index_ mientras que la best_score_ El atributo no estará disponible.

El estimador reacondicionado está disponible en el best_estimator_ atributo y permisos usando predict directamente en esto RandomizedSearchCV ejemplo.

También para la evaluación de métricas múltiples, los atributos best_index_, best_score_ y best_params_ solo estará disponible si refit se establece y todos ellos se determinarán con este anotador específico.

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

Modificado en la versión 0.20: Se agregó soporte para invocables.

verboseint

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

random_stateint, RandomState instance or None, default=None

Estado del generador de números pseudoaleatorios utilizado para el muestreo uniforme aleatorio de listas de valores posibles en lugar de distribuciones scipy.stats. Pase un int para una salida reproducible a través de múltiples llamadas a funciones. Ver Glosario.

error_score‘raise’ or numeric, default=np.nan

Valor para asignar a la puntuación si ocurre un error en el ajuste del estimador. Si se establece en ‘subir’, se genera el error. Si se proporciona un valor numérico, se genera FitFailedWarning. Este parámetro no afecta el paso de reacondicionamiento, que siempre generará el error.

return_train_scorebool, default=False

Si False, los cv_results_ El atributo no incluirá las puntuaciones de entrenamiento. Los puntajes de capacitación computarizados se utilizan para obtener información sobre cómo diferentes configuraciones de parámetros impactan en la compensación de sobreajuste / desajuste. Sin embargo, calcular las puntuaciones en el conjunto de entrenamiento puede ser costoso desde el punto de vista computacional 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.

Modificado en la versión 0.21: El valor predeterminado se cambió de True para False

Atributos
cv_results_dict of numpy (masked) ndarrays

Un dictado con claves como encabezados de columna y valores como columnas, que se pueden importar a un pandas DataFrame.

Por ejemplo, la siguiente tabla

param_kernel

param_gamma

split0_test_score

rank_test_score

‘rbf’

0,1

0,80

1

‘rbf’

0,2

0,84

3

‘rbf’

0,3

0,70

2

estará representado por un cv_results_ dictado de:

{
'param_kernel' : masked_array(data = ['rbf', 'rbf', 'rbf'],
                              mask = False),
'param_gamma'  : masked_array(data = [0.1 0.2 0.3], mask = False),
'split0_test_score'  : [0.80, 0.84, 0.70],
'split1_test_score'  : [0.82, 0.50, 0.70],
'mean_test_score'    : [0.81, 0.67, 0.70],
'std_test_score'     : [0.01, 0.24, 0.00],
'rank_test_score'    : [1, 3, 2],
'split0_train_score' : [0.80, 0.92, 0.70],
'split1_train_score' : [0.82, 0.55, 0.70],
'mean_train_score'   : [0.81, 0.74, 0.70],
'std_train_score'    : [0.01, 0.19, 0.00],
'mean_fit_time'      : [0.73, 0.63, 0.43],
'std_fit_time'       : [0.01, 0.02, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00],
'params'             : [{'kernel' : 'rbf', 'gamma' : 0.1}, ...],
}

NOTA

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

los mean_fit_time, std_fit_time, mean_score_time y std_score_time son todos en segundos.

Para la evaluación multimétrica, las puntuaciones de todos los puntuadores están disponibles en la cv_results_ dictar en las teclas que terminan con el nombre de ese anotador ('_<scorer_name>') en lugar de '_score' mostrado anteriormente. (‘split0_test_precision’, ‘mean_train_precision’, etc.)

best_estimator_estimator

Estimador que fue elegido por la búsqueda, es decir, 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 disponible si refit=False.

Para la evaluación multimétrica, este atributo está presente solo si refit está especificado.

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

best_score_float

Puntuación media validada de forma cruzada del best_estimator.

Para la evaluación multimétrica, esto no está disponible si refit es False. Ver refit parámetro para obtener más información.

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

best_params_dict

Configuración de parámetros que dio los mejores resultados en los datos de reserva.

Para la evaluación multimétrica, esto no está disponible si refit es False. Ver refit parámetro para obtener más información.

best_index_int

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

El dict 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, esto no está disponible si refit es False. Ver refit parámetro para obtener más información.

scorer_function or a dict

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

Para la evaluación multimétrica, este atributo contiene el validado scoring dict que asigna la clave del anotador al anotador invocable.

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.

Esto está presente solo si refit no es falso.

Nuevo en la versión 0.20.

multimetric_bool

Si los calificadores calculan o no varias métricas.

Ver también

GridSearchCV

Realiza una búsqueda exhaustiva sobre una cuadrícula de parámetros.

ParameterSampler

Un generador sobre la configuración de parámetros, construido a partir de param_distributions.

Notas

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

Si n_jobs se estableció en un valor superior a uno, los datos se copian para cada ajuste de parámetro (y no n_jobs veces). Esto se hace por razones de eficiencia si los trabajos individuales toman muy poco tiempo, pero pueden generar errores si el conjunto de datos es grande y no hay suficiente memoria disponible. Una solución alternativa en este caso es establecer pre_dispatch. Entonces, la memoria se copia solo pre_dispatch muchas veces. Un valor razonable para pre_dispatch es 2 *
n_jobs
.

Ejemplos de

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import RandomizedSearchCV
>>> from scipy.stats import uniform
>>> iris = load_iris()
>>> logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
>>> distributions = dict(C=uniform(loc=0, scale=4),
...                      penalty=['l2', 'l1'])
>>> clf = RandomizedSearchCV(logistic, distributions, random_state=0)
>>> search = clf.fit(iris.data, iris.target)
>>> search.best_params_
{'C': 2..., 'penalty': 'l1'}

Métodos

decision_function(X)

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

fit(X[, y, groups])

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

get_params([deep])

Obtenga parámetros para este estimador.

inverse_transform(Xt)

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

predict(X)

Llame a predecir en el estimador con los mejores parámetros encontrados.

predict_log_proba(X)

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

predict_proba(X)

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

score(X[, y])

Devuelve la puntuación de los datos proporcionados, si el estimador se ha reajustado.

score_samples(X)

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

set_params(** parámetros)

Establezca los parámetros de este estimador.

transform(X)

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

decision_function(X) [source]

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

Solo disponible si refit=True y el estimador subyacente admite decision_function.

Parámetros
Xindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

fit(X, y=None, *, groups=None, **fit_params) [source]

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

Parámetros
Xarray-like of shape (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 of shape (n_samples, n_output) or (n_samples,), default=None

Objetivo relativo a X para clasificación o regresión; Ninguno para aprendizaje no supervisado.

groupsarray-like of shape (n_samples,), default=None

Agrupe las etiquetas de las muestras utilizadas al dividir el conjunto de datos en conjunto de tren / prueba. Solo se usa junto con un “Grupo” CV instancia (p. ej., GroupKFold).

**fit_paramsdict of str -> object

Parámetros pasados ​​al fit método del estimador

get_params(deep=True) [source]

Obtenga 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.

Devoluciones
paramsdict

Nombres de parámetros asignados a sus valores.

inverse_transform(Xt) [source]

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

Solo disponible si el estimador subyacente implementa inverse_transform y refit=True.

Parámetros
Xtindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

predict(X) [source]

Llame a predecir en el estimador con los mejores parámetros encontrados.

Solo disponible si refit=True y el estimador subyacente admite predict.

Parámetros
Xindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

predict_log_proba(X) [source]

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

Solo disponible si refit=True y el estimador subyacente admite predict_log_proba.

Parámetros
Xindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

predict_proba(X) [source]

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

Solo disponible si refit=True y el estimador subyacente admite predict_proba.

Parámetros
Xindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

score(X, y=None) [source]

Devuelve la puntuación de los datos proporcionados, si el estimador se ha reajustado.

Esto usa la puntuación definida por scoring donde se proporciona, y el best_estimator_.score método de lo contrario.

Parámetros
Xarray-like of shape (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 of shape (n_samples, n_output) or (n_samples,), default=None

Objetivo relativo a X para clasificación o regresión; Ninguno para aprendizaje no supervisado.

Devoluciones
scorefloat
score_samples(X) [source]

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

Solo disponible si refit=True y el estimador subyacente admite score_samples.

Nuevo en la versión 0.24.

Parámetros
Xiterable

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

Devoluciones
y_scorendarray of shape (n_samples,)
set_params(**params) [source]

Establezca los parámetros de este estimador.

El método funciona tanto en 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.

Devoluciones
selfestimator instance

Instancia de estimador.

transform(X) [source]

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

Solo disponible si el estimador subyacente admite transform y refit=True.

Parámetros
Xindexable, length n_samples

Debe cumplir con los supuestos de entrada del estimador subyacente.

Ejemplos usando sklearn.model_selection.RandomizedSearchCV

Aspectos destacados de la versión para scikit-learn 0.24

Aspectos destacados de la versión para scikit-learn 0.24

Comparación de la búsqueda aleatoria y la búsqueda de cuadrícula para la estimación de hiperparámetros

Comparación de la búsqueda aleatoria y la búsqueda de cuadrícula para la estimación de hiperparámetros