sklearn.linear_model
.LogisticRegressionCV¶
- class sklearn.linear_model.LogisticRegressionCV¶
Clasificador de Regresión Logística CV (también conocido como logit, MaxEnt).
Ver entrada del glosario para cross-validation estimator.
Esta clase implementa la regresión logística utilizando el optimizador liblinear, newton-cg, sag o lbfgs. Los solucionadores newton-cg, sag y lbfgs sólo soportan la regularización L2 con formulación primal. El solucionador liblinear soporta tanto la regularización L1 como la L2, con una formulación dual sólo para la penalización L2. La penalización Elastic-Net sólo es compatible con el solucionador saga.
Para la cuadrícula de valores
Cs
yl1_ratios
, el mejor hiperparámetro es seleccionado por el validador cruzadoStratifiedKFold
, pero puede ser cambiado usando el parámetro cv. Los solucionadores “newton-cg”, “sag”, “saga” y “lbfgs” pueden arrancar en caliente (warm-start) los coeficientes (ver Glosario).Leer más en el Manual de Usuario.
- Parámetros
- Csint o lista de flotantes, default=10
Cada uno de los valores en Cs describe el inverso de la fuerza de regularización. Si Cs es como un int, entonces se elige una cuadrícula de valores Cs en una escala logarítmica entre 1e-4 y 1e4. Como en las máquinas de vectores de soporte, los valores más pequeños especifican una regularización más fuerte.
- fit_interceptbool, default=True
Especifica si una constante (también conocida como sesgo o intercepto) se debe añadir a la función de decisión.
- cvint o generador de validación cruzada, default=None
El generador de validación cruzada utilizado por defecto es Stratified K-Folds. Si se proporciona un número entero, entonces es el número de partes (folds) utilizadas. Ver el módulo
sklearn.model_selection
para la lista de posibles objetos de validación cruzada.Distinto en la versión 0.22: El valor predeterminado de
cv
, si es None, cambió de 3 partes a 5 partes.- dualbool, default=False
Formulación dual o primal. La formulación dual sólo se implementa para la penalización l2 con el solucionador liblinear. Preferir dual=False cuando n_samples > n_features.
- penalty{“l1”, “l2”, “elasticnet”}, default=”l2”
Utilizado para especificar la norma usada en la penalización. Los solucionadores “newton-cg”, “sag” y “lbfgs” sólo soportan penalizaciones l2. “elasticnet” sólo es soportado por el solucionador “saga”.
- scoringcadena de caracteres o invocable, default=None
Una cadena (ver la documentación sobre la evaluación del modelo) o un objeto / función de puntuación invocable con la firma
scorer(estimator, X, y)
. Para obtener una lista de funciones de puntuación que pueden ser usadas, consultasklearn.metrics
. La opción de puntuación utilizada por defecto es “accuracy”.- solver{“newton-cg”, “lbfgs”, “liblinear”, “sag”, “saga”}, default=”lbfgs”
Algoritmo a utilizar en el problema de optimización.
Para conjuntos de datos pequeños, “liblinear” es una buena elección, mientras que “sag” y “saga” son más rápidos para los grandes.
Para los problemas multiclase, sólo “newton-cg”, “sag”, “saga” y “lbfgs” manejan la pérdida multinomial; “liblinear” se limita a los esquemas de uno contra el resto.
“newton-cg”, “lbfgs” y “sag” sólo manejan la penalización L2, mientras que “liblinear” y “saga” manejan la penalización L1.
“liblinear” podría ser más lento en LogisticRegressionCV porque no maneja el arranque en caliente (warm-starting).
Ten en cuenta que la convergencia rápida de “sag” y “saga” sólo está garantizada en características con aproximadamente la misma escala. Puedes preprocesar los datos con un escalador de sklearn.preprocessing.
Nuevo en la versión 0.17: Solucionador de descenso de Gradiente Medio Estocástico (Stochastic Average Gradient descent solver).
Nuevo en la versión 0.19: Solucionador SAGA.
- tolfloat, default=1e-4
Tolerancia para el criterio de parada.
- max_iterint, default=100
Número máximo de iteraciones del algoritmo de optimización.
- class_weightdiccionario o “balanced”, default=None
Ponderaciones asociadas a las clases de la forma
{class_label: weight}
. Si no se da, se supone que todas las clases tienen ponderación uno.El modo «balanced» utiliza los valores de y para ajustar automáticamente las ponderaciones de forma inversamente proporcional a las frecuencias de las clases en los datos de entrada como
n_samples / (n_classes * np.bincount(y))
.Ten en cuenta que estas ponderaciones se multiplicarán por sample_weight (pasado por el método de ajuste) si se especifica sample_weight.
Nuevo en la versión 0.17: class_weight == “balanced”
- n_jobsint, default=None
Número de núcleos de CPU utilizados durante el bucle de validación cruzada.
None
significa 1 a menos que esté en un contextojoblib.parallel_backend
.-1
significa usar todos los procesadores. Ver Glosario para más detalles.- verboseint, default=0
Para los solucionadores “liblinear”, “sag” y “lbfgs” establece verbose a cualquier número positivo para la verbosidad.
- refitbool, default=True
Si se establece en True, las puntuaciones se promedian entre todas las partes, y se toman los coefs y la C correspondientes a la mejor puntuación, y se hace un reajuste final utilizando estos parámetros. En caso contrario, se promedian los coefs, interceptos y C correspondientes a las mejores puntuaciones en todas las partes.
- intercept_scalingfloat, default=1
Útil sólo cuando se usa el solucionador “liblinear” y self.fit_intercept se establece en True. En este caso, x se convierte en [x, self.intercept_scaling], es decir, una característica «sintética» con valor constante igual a intercept_scaling se añade al vector de la instancia. El intercepto se convierte en
intercept_scaling * synthetic_feature_weight
.Nota: la ponderación de la característica sintética está sujeta a la regularización l1/l2 como todas las demás características. Para disminuir el efecto de la regularización en la ponderación de la característica sintética (y por lo tanto en el intercepto) el intercept_scaling tiene que aumentarse.
- multi_class{“auto, “ovr”, “multinomial”}, default=”auto”
Si la opción elegida es “ovr”, entonces se ajusta un problema binario para cada etiqueta. Para “multinomial” la pérdida minimizada es la pérdida multinomial ajustada a través de toda la distribución de probabilidad, incluso cuando los datos son binarios. “multinomial” no está disponible cuando solver=”liblinear”. auto” selecciona “ovr” si los datos son binarios, o si solver=”liblinear”, y en caso contrario selecciona “multinomial”.
Nuevo en la versión 0.18: Solucionador de descenso de Gradiente Medio Estocástico para el caso “multinomial”.
Distinto en la versión 0.22: Por defecto cambió de “ovr” a “auto” en 0.22.
- random_stateentero, instancia de RandomState, default=None
Utilizado cuando
solver='sag'
, “saga” o “liblinear” para revolver los datos. Ten en cuenta que esto sólo se aplica al solucionador y no al generador de validación cruzada. Ver Glosario para obtener detalles.- l1_ratioslista de flotantes, default=None
La lista del parámetro de mezcla de Elastic-Net, con
0 < l1_ratio <= 1
. Sólo se utiliza sipenalty='elasticnet'
. Un valor de 0 es equivalente a utilizarpenalty='l2'
, mientras que 1 es equivalente a utilizarpenalty='l1'
. Para0 < l1_ratio < 1
, la penalización es una combinación de L1 y L2.
- Atributos
- classes_ndarray de forma (n_classes, )
Una lista de etiquetas de clase conocidas por el clasificador.
- coef_ndarray de forma (1, n_features) o (n_classes, n_features)
Coeficiente de las características en la función de decisión.
coef_
es de forma (1, n_features) cuando el problema dado es binario.- intercept_ndarray de forma (1,) o (n_classes,)
Intercepto (también conocido como sesgo) añadido a la función de decisión.
Si
fit_intercept
se establece en False, el intercepto se establece en cero.intercept_
es de forma (1,) cuando el problema es binario.- Cs_ndarray de forma (n_cs)
Arreglo de C, es decir, la inversa de los valores de los parámetros de regularización utilizados para la validación cruzada.
- l1_ratios_ndarray de forma (n_l1_ratios)
Arreglo de l1_ratios utilizados para la validación cruzada. Si no se utiliza l1_ratio (es decir, la penalización no es “elasticnet”), se establece como
[None]
- coefs_paths_ndarray de forma (n_folds, n_cs, n_features) o (n_folds, n_cs, n_features + 1)
Diccionario con las clases como claves, y la ruta de los coeficientes obtenidos durante la validación cruzada a través de cada parte (fold) y luego a través de cada Cs después de hacer un OvR para la clase correspondiente como valores. Si la opción “multi_class” se establece como “multinomial”, entonces los coefs_paths son los coeficientes correspondientes a cada clase. Cada valor del diccionario tiene forma
(n_folds, n_cs, n_features)
o(n_folds, n_cs, n_features + 1)
dependiendo de si el intercepto se ajusta o no. Sipenalty='elasticnet'
, la forma es(n_folds, n_cs, n_l1_ratios_, n_features)
o(n_folds, n_cs, n_l1_ratios_, n_features + 1)
.- scores_dict
Diccionario con las clases como claves, y los valores como la cuadrícula de puntuaciones obtenidas durante la validación cruzada de cada parte (fold), después de hacer un OvR para la clase correspondiente. Si la opción “multi_class” dada es “multinomial” entonces las mismas puntuaciones se repiten en todas las clases, ya que se trata de la clase multinomial. Cada valor del diccionario tiene forma
(n_folds, n_cs
o(n_folds, n_cs, n_l1_ratios)
sipenalty='elasticnet'
.- C_ndarray de forma (n_classes,) o (n_classes - 1,)
Arreglo de C que se mapea a las mejores puntuaciones de cada clase. Si refit se establece en False, entonces para cada clase, la mejor C es la media de las C que corresponden a las mejores puntuaciones para cada parte.
C_
es de forma (n_classes,) cuando el problema es binario.- l1_ratio_ndarray de forma (n_classes,) o (n_classes - 1,)
Arreglo de l1_ratio que se mapea a las mejores puntuaciones de cada clase. Si refit se establece en False, entonces para cada clase, el mejor l1_ratio es el promedio de los l1_ratio que corresponden a las mejores puntuaciones para cada parte.
l1_ratio_
es de forma (n_classes,) cuando el problema es binario.- n_iter_ndarray de forma (n_classes, n_folds, n_cs) o (1, n_folds, n_cs)
Número real de iteraciones para todas las clases, partes y Cs. En los casos binarios o multinomiales, la primera dimensión es igual a 1. Si
penalty='elasticnet'
, la forma es(n_classes, n_folds, n_cs, n_l1_ratios)
o(1, n_folds, n_cs, n_l1_ratios)
.
Ver también
Ejemplos
>>> from sklearn.datasets import load_iris >>> from sklearn.linear_model import LogisticRegressionCV >>> X, y = load_iris(return_X_y=True) >>> clf = LogisticRegressionCV(cv=5, random_state=0).fit(X, y) >>> clf.predict(X[:2, :]) array([0, 0]) >>> clf.predict_proba(X[:2, :]).shape (2, 3) >>> clf.score(X, y) 0.98...
Métodos
Predice las puntuaciones de confianza de las muestras.
Convierte la matriz de coeficientes en formato de arreglo denso.
Ajusta el modelo según los datos de entrenamiento dados.
Obtiene los parámetros para este estimador.
Predice las etiquetas de clase para las muestras en X.
Predice el logaritmo de las estimaciones de probabilidad.
Estimaciones de probabilidad.
Devuelve la puntuación utilizando la opción
scoring
en los datos de la prueba y las etiquetas dadas.Establece los parámetros de este estimador.
Convierte la matriz de coeficientes en formato disperso.
- decision_function()¶
Predice las puntuaciones de confianza de las muestras.
La puntuación de confianza de una muestra es proporcional a la distancia con signo de esa muestra al hiperplano.
- Parámetros
- Xarray-like o matriz dispersa, forma (n_samples, n_features)
Muestras.
- Devuelve
- arreglo, forma=(n_samples,) si n_classes == 2 de lo contrario (n_samples, n_classes)
Puntuaciones de confianza por combinación (sample, class). En el caso binario, la puntuación de confianza para self.classes_[1] donde >0 significa que esta clase sería predicha.
- densify()¶
Convierte la matriz de coeficientes en formato de arreglo denso.
Convierte el miembro
coef_
(de vuelta) en un numpy.ndarray. Este es el formato predeterminado decoef_
y se requiere para el ajuste, por lo que llamar a este método sólo es necesario en los modelos que han sido previamente dispersados (sparsified); de lo contrario, es un no-op.- Devuelve
- self
Estimador ajustado.
- fit()¶
Ajusta el modelo según los datos de entrenamiento dados.
- Parámetros
- X{array-like, sparse matrix} 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,)
Vector objetivo relativo a X.
- sample_weightarray-like de forma (n_samples,) default=None
Arreglo de ponderaciones que se asignan a las muestras individuales. Si no se proporciona, entonces cada muestra recibe una ponderación unitaria.
- Devuelve
- selfobject
- 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.
- predict()¶
Predice las etiquetas de clase para las muestras en X.
- Parámetros
- Xarray-like o matriz dispersa, forma (n_samples, n_features)
Muestras.
- Devuelve
- Carreglo, forma [n_samples]
Etiqueta de clase predicha por muestra.
- predict_log_proba()¶
Predice el logaritmo de las estimaciones de probabilidad.
Las estimaciones devueltas para todas las clases están ordenadas por la etiqueta de las clases.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Vector a ser puntuado, donde
n_samples
es el número de muestras yn_features
es el número de características.
- Devuelve
- Tarray-like de forma (n_samples, n_classes)
Devuelve la probabilidad logarítmica de la muestra para cada clase en el modelo, donde las clases se ordenan como están en
self.classes_
.
- predict_proba()¶
Estimaciones de probabilidad.
Las estimaciones devueltas para todas las clases están ordenadas por la etiqueta de las clases.
Para un problema multi_class, si multi_class está establecido como «multinomial» se utiliza la función softmax para encontrar la probabilidad predicha de cada clase. De lo contrario, se utiliza un enfoque de uno contra el resto, es decir, se calcula la probabilidad de cada clase asumiendo que es positiva utilizando la función logística y se normalizan estos valores en todas las clases.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Vector a ser puntuado, donde
n_samples
es el número de muestras yn_features
es el número de características.
- Devuelve
- Tarray-like de forma (n_samples, n_classes)
Devuelve la probabilidad de la muestra para cada clase en el modelo, donde las clases se ordenan como están en
self.classes_
.
- score()¶
Devuelve la puntuación utilizando la opción
scoring
en los datos de la prueba y las etiquetas dadas.- Parámetros
- Xarray-like de forma (n_samples, n_features)
Muestras de prueba.
- yarray-like de forma (n_samples,)
Etiquetas verdaderas para X.
- sample_weightarray-like de forma (n_samples,), default=None
Ponderaciones de muestras.
- Devuelve
- scorefloat
Puntuación de self.predict(X) con respecto a y.
- set_params()¶
Establece 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.
- Devuelve
- selfinstancia del estimador
Instancia del estimador.
- sparsify()¶
Convierte la matriz de coeficientes en formato disperso.
Convierte el miembro
coef_
en una matriz scipy.sparse, que para los modelos L1-regularizados puede ser mucho más eficiente en cuanto a memoria y almacenamiento que la representación numpy.ndarray habitual.El miembro
intercept_
no se convierte.- Devuelve
- self
Estimador ajustado.
Notas
Para los modelos no dispersos, es decir, cuando no hay muchos ceros en
coef_
, esto puede en realidad aumentar el uso de la memoria, así que utiliza este método con cuidado. Una regla general es que el número de elementos cero, que puede ser calculado con(coef_ == 0).sum()
, debe ser más del 50% para que esto proporcione beneficios significativos.Después de llamar a este método, el ajuste posterior con el método partial_fit (si lo hay) no funcionará hasta que llames a densify.