sklearn.model_selection
.RandomizedSearchCV¶
- class sklearn.model_selection.RandomizedSearchCV¶
Búsqueda aleatoria en los hiperparámetros.
RandomizedSearchCV 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 validada cruzada sobre los ajustes 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 ajustes de los 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 al menos un parámetro se presenta como una distribución, se utiliza el muestreo con reemplazo. Se recomienda encarecidamente utilizar distribuciones continuas para los parámetros continuos.
Más información en el Manual de usuario.
Nuevo en la versión 0.14.
- Parámetros
- estimatorobjeto estimador.
Un objeto de ese tipo es instanciado para cada punto de la cuadrícula. Se supone que esto implementa la interfaz del estimador de scikit-learn. O bien el estimador necesita proporcionar una función
score
, o se debe pasarscoring
.- param_distributionsdict o lista de dicts
Diccionario con nombres de parámetros (
str
) como claves y distribuciones o listas de parámetros a probar. Las distribuciones deben proporcionar un métodorvs
para el muestreo (como los de scipy.stats.distributions). Si se da una lista, se muestrea uniformemente. Si se da una lista de dicts, primero se muestrea un dict de manera uniforme, y luego se muestrea un parámetro usando ese dict como arriba.- n_iterint, default=10
Número de ajustes de parámetros que se muestrean. n_iter compensa el tiempo de ejecución frente a la calidad de la solución.
- 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.
Si es None, se utiliza el método de puntuación del estimador.
- n_jobsint, default=None
Número de trabajos a ejecutar en paralelo.
None
significa 1 a menos que esté en un contextojoblib.parallel_backend
.-1
significa utilizar todos los procesadores. Ver Glosario para más detalles.Distinto en la versión v0.20:
n_jobs
predeterminado cambiado de 1 a None- pre_dispatchint, o str, default=None
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 función de n_jobs, como en “2*n_jobs”
- cvint, generador de validación cruzada o un iterable, por defecto=None
Determina la estrategia de separación de la validación cruzada. Las entradas posibles para cv son:
None, para utilizar la validación cruzada de 5 pliegues por defecto,
entero, para especificar el número de pliegues en un
(Stratified)KFold
,Un iterable que produce (train, test) se separa como arreglos de índices.
Para entradas enteras/None, si el estimador es un clasificador e
y
es binario o multiclase, se utilizaStratifiedKFold
. En todos los demás casos, se utilizaKFold
.Consulte la Guía del usuario para conocer las distintas estrategias de validación cruzada que pueden utilizarse aquí.
Distinto en la versión 0.22: El valor predeterminado es
cv
si no se cambia de 3 a 5 veces.- refitbooleano, default=True
Reajustar un estimador utilizando los mejores parámetros encontrados en todo el conjunto de datos.
Para la evaluación de métricas múltiples, 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
puede establecerse en una función que devuelva elbest_index_
seleccionado dado elcv_results
. En ese caso, elbest_estimator_
ybest_params
se establecerán de acuerdo con elbest_index_
devuelto, mientras que el atributobest_score_
no estará disponible.El estimador ajustado está disponible en el atributo
best_estimator_
y permite utilizarpredict
directamente en esta instancia deRandomizedSearchCV
.También para la evaluación de múltiples métricas, los atributos
best_index_
,best_score_
ybest_params_
sólo estarán disponibles si se establecerefit
y todos ellos se determinarán con este estimador 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.
- random_stateentero, instancia de RandomState o None, default=None
Estado del generador de números pseudoaleatorios utilizado para el muestreo uniforme aleatorio de las listas de valores posibles en lugar de las distribuciones de scipy.stats. Pase un int para una salida reproducible a través de múltiples llamadas a la función. Ver Glosario.
- error_score“raise” o numérico, 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 levanta FitFailedWarning. Este parámetro no afecta al paso de reajuste, que siempre elevará el error.
- return_train_scorebool, default=False
Si es
False
, el atributocv_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 e infraajuste. Sin embargo, calcular las puntuaciones en el conjunto de entrenamiento puede ser costoso desde el punto de vista informático 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
aFalse
- 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
split0_test_score
…
rank_test_score
“rbf”
0.1
0.80
…
1
“rbf”
0.2
0.84
…
3
“rbf”
0.3
0.70
…
2
será representado por un dict
cv_results_
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 diccionarios (dicts) de configuración de parámetros para todos los candidatos a parámetros.El
mean_fit_time
,std_fit_time
,mean_score_time
ystd_score_time
están todos 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_estimador
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
.Para la evaluación multimétrica, este atributo sólo está presente si se especifica
refit
.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, esto no está disponible si
refit
esFalse
. Para más información, consulte el parámetrorefit
.Este atributo no está disponible si
refit
es una función.- best_params_dict
Ajuste del parámetro que dio los mejores resultados en los datos de retención.
Para la evaluación multimétrica, esto no está disponible si
refit
esFalse
. Para más información, consulte el parámetrorefit
.- best_index_int
El índice (de los arreglos
cv_results_
) que corresponde al mejor ajuste de parámetros candidato.El diccionario (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
esFalse
. Para más información, consulte el parámetrorefit
.- scorer_function o un dict
Función de puntuación utilizada en los datos retenidos para elegir los mejores parámetros para el 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 separaciones 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 sólo 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
GridSearchCV
Realiza una búsqueda exhaustiva sobre una cuadrícula de parámetros.
ParameterSampler
Un generador sobre los ajustes de los parámetros, construido a partir de param_distributions.
Notas
Los parámetros seleccionados son los 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ámetros (y non_jobs
veces). Esto se hace por razones de eficiencia si los trabajos individuales llevan 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 establecerpre_dispatch
. Entonces, la memoria se copia sólopre_dispatch
muchas veces. Un valor razonable parapre_dispatch
es2 * n_jobs
.Ejemplos
>>> 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
Llama a decision_function en el estimador con los mejores parámetros encontrados.
Ejecutar el ajuste con todos los conjuntos de parámetros.
Obtiene los parámetros para este estimador.
Llamar a inverse_transform en el estimador con los mejores parámetros encontrados.
Llama a predict en el estimador con los mejores parámetros encontrados.
Llamar a predict_log_proba en el estimador con los mejores parámetros encontrados.
Llamar a predict_proba en el estimador con los mejores parámetros encontrados.
Devuelve la puntuación en los datos dados, si el estimador ha sido reajustado.
Establece los paráLlamar a score_samples en el estimador con los mejores parámetros encontrados.
Establece los parámetros de este estimador.
Llama a la transformación del 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 soportadecision_function
.- Parámetros
- Xindexable, longitud n_samples
Debe cumplir los supuestos de entrada del estimador subyacente.
- fit()¶
Ejecutar 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; ninguno 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
- deepbooleano, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Los nombres de los parámetros se asignan a sus valores.
- inverse_transform()¶
Llamar a inverse_transform en el estimador con los mejores parámetros encontrados.
Sólo está disponible si el estimador subyacente implementa
inverse_transform
yrefit=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 soportapredict
.- Parámetros
- Xindexable, longitud n_samples
Debe cumplir los supuestos de entrada del estimador subyacente.
- predict_log_proba()¶
Llamar a predict_log_proba en el estimador con los mejores parámetros encontrados.
Sólo está disponible si
refit=True
y el estimador subyacente soportapredict_log_proba
.- Parámetros
- Xindexable, longitud n_samples
Debe cumplir los supuestos de entrada del estimador subyacente.
- predict_proba()¶
Llamar a predict_proba en el estimador con los mejores parámetros encontrados.
Sólo está disponible si
refit=True
y el estimador subyacente soportapredict_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étodobest_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; ninguno para el aprendizaje no supervisado.
- Devuelve
- scorefloat
- score_samples()¶
Establece los paráLlamar a score_samples en el estimador con los mejores parámetros encontrados.
Sólo está disponible si
refit=True
y el estimador subyacente soportascore_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 con 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 la transformación del estimador con los mejores parámetros encontrados.
Sólo está disponible si el estimador subyacente soporta
transform
yrefit=True
.- Parámetros
- Xindexable, longitud n_samples
Debe cumplir los supuestos de entrada del estimador subyacente.