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 y l1_ratios, el mejor hiperparámetro es seleccionado por el validador cruzado StratifiedKFold, 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, consulta sklearn.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 contexto joblib.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 si penalty='elasticnet'. Un valor de 0 es equivalente a utilizar penalty='l2', mientras que 1 es equivalente a utilizar penalty='l1'. Para 0 < 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. Si penalty='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) si penalty='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

LogisticRegression

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

decision_function

Predice las puntuaciones de confianza de las muestras.

densify

Convierte la matriz de coeficientes en formato de arreglo denso.

fit

Ajusta el modelo según los datos de entrenamiento dados.

get_params

Obtiene los parámetros para este estimador.

predict

Predice las etiquetas de clase para las muestras en X.

predict_log_proba

Predice el logaritmo de las estimaciones de probabilidad.

predict_proba

Estimaciones de probabilidad.

score

Devuelve la puntuación utilizando la opción scoring en los datos de la prueba y las etiquetas dadas.

set_params

Establece los parámetros de este estimador.

sparsify

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 de coef_ 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 y n_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 y n_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.