sklearn.linear_model.ElasticNetCV

class sklearn.linear_model.ElasticNetCV

Modelo de Red Elástica con ajuste iterativo a lo largo de una trayectoria de regularización.

Ver entrada de glosario para cross-validation estimator.

Más información en el Manual de usuario.

Parameters
l1_ratioflotante o lista de flotantes, default=0.5

flotante entre 0 y 1 pasado a ElasticNet (escalado entre penalidades l1 y l2). Para l1_ratio = 0 la penalización es una penalización L2. Para l1_ratio = 1 es una penalización L1. Para 0 < l1_ratio < 1, la penalización es una combinación de L1 y L2 Este parámetro puede ser una lista, caso en el cual los distintos valores son probados por validación cruzada y aquel que dé el mejor puntaje de predicción es utilizado. Tenga en cuenta que una buena decisión a la hora de pasar listas de valores a l1_ratio es poner más valores cerca de 1 (es decir, Lasso) y menos cerca de 0 (es decir, Ridge, o Cresta) como en [.1, .5, .7, .9, .95, .99, 1].

epsfloat, default=1e-3

Longitud de la ruta. eps=1e-3 significa que alpha_min / alpha_max = 1e-3.

n_alphasint, default=100

Número de alfas a lo largo de la ruta de regularización, usado para cada l1_ratio.

alphasndarray, default=None

Lista de alfas donde calcular los modelos. Si es None los alfas se establecen automáticamente.

fit_interceptbooleano, default=True

Si se calcula el intercepto para este modelo. Si se establece como falso, no se usara ningún intercepto en los cálculos (es decir, los datos se espera que estén centrados).

normalizebooleano, default=False

Este parámetro es ignorado cuando fit_intercept se establece como False. Si True, los regresores X serán normalizados antes de la regresión restando la media y dividiendo por la norma l2. Si tu deseas estandarizar, por favor utiliza StandardScaler antes de llamar fit en un estimador con normalize=False.

precompute“auto”, bool o array-like de forma (n_features, n_features), default=”auto”

Si usar una matriz precalculada Gram para acelerar los cálculos. Si se establece como 'auto', nosotros decidimos. La matriz de Gram puede también ser pasada como un argumento.

max_iterint, default=1000

Número máximo de iteraciones.

tolfloat, default=1e-4

La tolerancia para la optimización: si las actualizaciones son menores que tol, el código de optimización comprueba la brecha dual para la optimalidad y continúa hasta que es menor que tol.

cventero, generador de validación cruzada o iterable, default=None

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

  • None, para usar la validación cruzada de 5 partes por defecto,

  • entero, para especificar el número de pliegues.

  • separador de CV,

  • Un iterable que produce divisiones (train, test) como arreglos de índices.

Para entradas None/de enteros se usa KFold.

Consulte Guía de usuario para las diversas estrategias de validación cruzada que pueden ser utilizadas aquí.

Distinto en la versión 0.22: cv es el valor predeterminado si None cambió de 3 partes a 5 partes.

copy_Xbooleano, default=True

Si es True, X se copiará; si no, puede ser sobrescrito.

verbosebool o entero, default=0

Cantidad de verbosidad.

n_jobsint, default=None

Número de CPUs a usar durante la validación cruzada. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa utilizar todos los procesadores. Ver Glosario para más detalles.

positivobooleano, default=False

Cuando se establece en True, obliga a los coeficientes a ser positivos.

random_stateentero, instancia de RandomState, default=None

La semilla del generador de números pseudo aleatorio que selecciona una característica aleatoria a actualizar. Usada cuando selection ==”random”. Pasa un entero para una salida reproducible a través de multiples llamadas de función. Ver Glosario.

selection{“cyclic”, “random”}, default=”cyclic”

Si se establece a “random”, un coeficiente aleatorio es actualizado cada iteración en lugar de hacer un bucle sobre características secuencialmente por defecto. Esto (establecer a “random”) a menudo lleva a convergencia significativamente mas rápida especialmente cuando tol es mayor que 1e-4.

Atributos
alpha_flotante

La cantidad de penalización elegida por validación cruzada.

l1_ratio_flotante

El compromiso entre la penalización l1 y l2 elegido por validación cruzada.

coef_ndarray de forma (n_features,) o (n_targets, n_features)

Vector de parámetros (w en la fórmula de función de coste).

intercept_float o ndarray de forma (n_targets, n_features)

Término independiente en la función de decisión.

mse_path_ndarray de forma (n_l1_ratio, n_alphas, n_folds)

Error cuadrático medio para el conjunto de prueba en cada parte, variando l1_ratio y alpha.

alphas_ndarray de forma (n_alphas,) o (n_l1_ratio, n_alphas)

La cuadrícula de alphas usada para ajustar, por cada l1_ratio.

dual_gap_flotante

Los huecos duales al final de la optimización para el alfa óptimo.

n_iter_int

Número de iteraciones ejecutadas por el solucionador de descenso de coordenadas para alcanzar la tolerancia especificada para el alfa óptimo.

Ver también

enet_path
ElasticNet

Notas

Para un ejemplo, ver examples/linear_model/plot_lasso_model_selection.py.

Para evitar duplicaciones de memoria innecesarias, el argumento X del método fit debe ser pasado directamente como un arreglo numpy Fortran-contiguo.

El parámetro l1_ratio corresponde a alpha en el paquete glmnet R, mientras que alpha corresponde al parámetro lambda en glmnet. Más específicamente, el objetivo de optimización es:

1 / (2 * n_samples) * ||y - Xw||^2_2
+ alpha * l1_ratio * ||w||_1
+ 0.5 * alpha * (1 - l1_ratio) * ||w||^2_2

Si estás interesado en controlar la penalización L1 y L2 por separado, ten en cuenta que esto es equivalente a:

a * L1 + b * L2

para:

alpha = a + b and l1_ratio = a / (a + b).

Ejemplos

>>> from sklearn.linear_model import ElasticNetCV
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0)
>>> regr = ElasticNetCV(cv=5, random_state=0)
>>> regr.fit(X, y)
ElasticNetCV(cv=5, random_state=0)
>>> print(regr.alpha_)
0.199...
>>> print(regr.intercept_)
0.398...
>>> print(regr.predict([[0, 0]]))
[0.398...]

Métodos

fit

Ajustar el modelo lineal del descenso de coordenadas.

get_params

Obtiene los parámetros para este estimador.

ruta

Calcula la ruta de red elástica con el descenso de coordenadas.

predict

Predice utilizando el modelo lineal.

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece los parámetros de este estimador.

fit()

Ajustar el modelo lineal del descenso de coordenadas.

El ajuste esta en la cuadrícula de alfas y el mejor alfa estimado por validación cruzada.

Parameters
X{array-like, sparse matrix} de forma (n_samples, n_features)

Datos de entrenamiento. Pase directamente como datos Fortran-contiguos para evitar la duplicación innecesaria de memoria. Si y es mono-salida entonces X puede ser disperso.

yarray-like de forma (n_samples,) o (n_samples, n_targets)

Valores objetivo.

get_params()

Obtiene los parámetros para este estimador.

Parameters
deepbooleano, 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.

static path()

Calcula la ruta de red elástica con el descenso de coordenadas.

La función de optimización de red elástica varía para salidas mono y múltiples.

Para las tareas mono-salida es:

1 / (2 * n_samples) * ||y - Xw||^2_2
+ alpha * l1_ratio * ||w||_1
+ 0.5 * alpha * (1 - l1_ratio) * ||w||^2_2

Para tareas multi-salidas es:

(1 / (2 * n_samples)) * ||Y - XW||^Fro_2
+ alpha * l1_ratio * ||W||_21
+ 0.5 * alpha * (1 - l1_ratio) * ||W||_Fro^2

Donde:

||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}

es decir, la suma de la norma de cada fila.

Más información en el Manual de usuario.

Parameters
X{array-like, sparse matrix} de forma (n_samples, n_features)

Datos de entrenamiento. Pase directamente como datos Fortran-contiguos para evitar la duplicación innecesaria de memoria. Si y es mono-salida entonces X puede ser disperso.

y{array-like, sparse matrix} de forma (n_samples,), o (n_samples, n_outputs)

Valores objetivo.

l1_ratiofloat, default=0.5

Número entre 0 y 1 pasado a la red elástica (escalado entre penalizaciones l1 y l2). l1_ratio=1 corresponde al Lasso.

epsfloat, default=1e-3

Longitud de la ruta. eps=1e-3 significa que alpha_min / alpha_max = 1e-3.

n_alphasint, default=100

Número de alfas a lo largo de la ruta de regularización.

alphasndarray, default=None

Lista de alfas donde calcular los modelos. Si es None los alfas se establecen automáticamente.

precompute“auto”, bool o array-like de forma (n_features, n_features), default=”auto”

Si usar una matriz precalculada Gram para acelerar los cálculos. Si se establece como 'auto', nosotros decidimos. La matriz de Gram puede también ser pasada como un argumento.

Xyarray-like de forma (n_features,) o (n_features, n_outputs), default=None

Xy = np.dot(X.T, y) que puede ser precalculado. Es útil sólo cuando la matriz Gram está precalculada.

copy_Xbooleano, default=True

Si es True, X se copiará; si no, puede ser sobrescrito.

coef_initndarray de forma (n_features, ), default=None

Los valores iniciales de los coeficientes.

verbosebool o entero, default=False

Cantidad de verbosidad.

return_n_iterbooleano, default=False

Si se devuelve o no el número de iteraciones.

positivobooleano, default=False

Si se establece como True, obliga a los coeficientes a ser positivos. (Sólo se permite cuando y.ndim ==1).

check_inputbooleano, default=True

Si se establece como False, las comprobaciones de validación de entrada se omiten (incluyendo la matriz de Gram cuando se proporciona). Se asume que serán manejados por el llamador.

**paramskwargs

Argumentos de palabra clave pasados al solucionador de descenso de coordenadas.

Devuelve
alphasndarray de forma (n_alphas,)

Los alfas a lo largo del camino donde se calculan los modelos.

coefsndarray de forma (n_features, n_alphas) o (n_outputs, n_features, n_alphas)

Coeficientes a lo largo del camino.

dual_gapsndarray de forma (n_alphas,)

Los huecos duales al final de la optimización para cada alfa.

n_iterslista de int

El número de iteraciones tomadas por el optimizador de descenso de coordenadas para alcanzar la tolerancia especificada para cada alfa. (Es devuelto cuando return_n_iter está establecido a True).

Notas

Para un ejemplo, ver examples/linear_model/plot_lasso_coordinate_descent_path.py.

predict()

Predice utilizando el modelo lineal.

Parameters
Xarray-like o matriz dispersa, forma (n_samples, n_features)

Muestras.

Devuelve
Carreglo, forma (n_samples,)

Devuelve los valores predichos.

score()

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma residual de cuadrados ((y_true - y_pred) ** 2).sum() y \(v\) es la suma total de cuadrados ((y_true - y_true.mean()) ** 2).sum(). La mejor puntuación posible es 1.0 y puede ser negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0,0.

Parameters
Xarray-like de forma (n_samples, n_features)

Muestras de prueba. Para algunos estimadores puede ser una matriz de núcleo precalculada o una lista de objetos genéricos con forma (n_samples, n_samples_fitted), donde n_samples_fitted es el número de muestras utilizadas en el ajuste para el estimador.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Valores verdaderos para X.

sample_weightarray-like de forma (n_samples,), default=None

Ponderados de muestras.

Devuelve
scoreflotante

\(R^2\) de self.predict(X) con respecto a y.

Notas

La puntuación \(R^2\) utilizada al llamar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la coherencia con el valor predeterminado de r2_score`. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

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.

Parameters
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.