-
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, oscoring
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 unrvs
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 unjoblib.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 seleccionadobest_index_
Dado quecv_results
. En ese caso, elbest_estimator_
ybest_params_
se establecerá de acuerdo con la devoluciónbest_index_
mientras que labest_score_
El atributo no estará disponible.El estimador reacondicionado está disponible en el
best_estimator_
atributo y permisos usandopredict
directamente en estoRandomizedSearchCV
ejemplo.También para la evaluación de métricas múltiples, los atributos
best_index_
,best_score_
ybest_params_
solo estará disponible sirefit
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
, loscv_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
paraFalse
-
- 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
ystd_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
esFalse
. Verrefit
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
esFalse
. Verrefit
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
esFalse
. Verrefit
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 non_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 establecerpre_dispatch
. Entonces, la memoria se copia solopre_dispatch
muchas veces. Un valor razonable parapre_dispatch
es2 *
.
n_jobsEjemplos 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 admitedecision_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
yrefit=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 admitepredict
.- 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 admitepredict_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 admitepredict_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 elbest_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 admitescore_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
yrefit=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
Comparación de la búsqueda aleatoria y la búsqueda de cuadrícula para la estimación de hiperparámetros