sklearn.linear_model
.ElasticNet¶
- class sklearn.linear_model.ElasticNet¶
Regresión lineal con los priores L1 y L2 combinados como regularizador.
Minimiza la función objetivo:
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
donde:
alpha = a + b and l1_ratio = a / (a + b)
El parámetro l1_ratio corresponde a alpha en el paquete de R glmnet, mientras que alpha corresponde al parámetro lambda en glmnet. Específicamente, l1_ratio = 1 es la penalidad lasso. Actualmente, l1_ratio <= 0.01 no es fiable, a menos que tu proporciones tu propia secuencia de alpha.
Más información en el Manual de usuario.
- Parámetros
- alphafloat, default=1.0
Constante que multiplica los términos de penalización. Por defecto es 1.0. Ver las notas para el significado matemático exacto de este parámetro.
alpha = 0
es equivalente a un mínimos cuadrados ordinario, solucionado por el objetoLinearRegression
. Para razones numéricas, usaralpha = 0
con el objetoLasso
no es recomendado. Dado esto, deberías usar el objetoLinearRegression
.- l1_ratioflotante, default=0.5
El parámetro de mezcla de la regularización, con 0 <= l1_ratio <= 1. Para l1_ratio = 0 la penalización es una penalización componente a componente L2 (también conocida como Norma de Frobenius). Para l1_ratio = 1 es una penalización componente a componente L1. Para 0 < l1_ratio < 1, la penalización es una combinación de L1 y L2.
- fit_interceptbooleano, default=True
Si la interceptación debe ser estimada o no. Si
False
, se asume que los datos ya 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 utilizaStandardScaler
antes de llamarfit
en un estimador connormalize=False
.- precomputebool o array-like de forma (n_features, n_features), default=False
Si usar una matriz Gram precalculada para acelerar los cálculos. La matriz Gram también puede ser pasada como argumento. Para una entrada dispersa esta opción es siempre
True
para preservar la dispersidad.- max_iterint, default=1000
Número máximo de iteraciones.
- copy_Xbooleano, default=True
Si es
True
, X se copiará; si no, puede ser sobrescrito.- tolflotante, 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 quetol
.- warm_startbooleano, default=False
Cuando se establece a
True
, reutiliza la solución de la llamada anterior para ajustar como inicialización, de lo contrario, solamente borrará la solución anterior. Ver el Glosario.- 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 para actualizar. Utilizado cuando
selection
== “random”. Pasa un entero para una salida reproducible a través de múltiples 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
- 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).
sparse_coef_
matriz dispersa de forma (n_features,) o (n_tasks, n_features)Representación dispersa del
coef_
ajustado.- intercept_flotante o ndarray de la forma (n_targets,)
Término independiente en la función de decisión.
- n_iter_lista de int
Número de iteraciones ejecutadas por el solucionador de descenso de coordenadas para alcanzar la tolerancia especificada.
- dual_gap_flotante o ndarray de la forma (n_targets,)
Dado el parámetro alfa, las brechas duales al final de la optimización, de la misma forma que cada observación de y.
Ver también
ElasticNetCV
Modelo de red elástica con la mejor selección de modelos por validación cruzada.
SGDRegressor
Implementa la regresión de red elástica con entrenamiento incremental.
SGDClassifier
Implementa la regresión logística con la penalidad de red elástica (
SGDClassifier(loss="log", penalty="elasticnet")
).
Notas
Para evitar duplicaciones de memoria innecesarias, el argumento X del método fit debe ser pasado directamente como un arreglo numpy Fortran-contiguo.
Ejemplos
>>> from sklearn.linear_model import ElasticNet >>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0) >>> regr = ElasticNet(random_state=0) >>> regr.fit(X, y) ElasticNet(random_state=0) >>> print(regr.coef_) [18.83816048 64.55968825] >>> print(regr.intercept_) 1.451... >>> print(regr.predict([[0, 0]])) [1.451...]
Métodos
Ajusta el modelo del descenso de coordenadas.
Obtiene los parámetros para este estimador.
Calcula la ruta de red elástica con el descenso de coordenadas.
Predice utilizando el modelo lineal.
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
Establece los parámetros de este estimador.
- fit()¶
Ajusta el modelo del descenso de coordenadas.
- Parámetros
- X{ndarray, sparse matrix} de (n_samples, n_features)
Datos.
- y{ndarray, sparse matrix} de forma (n_samples,), o (n_samples, n_targets)
Objetivo. Se convertirá al dtype de X si es necesario.
- sample_weightflotante o array-like de forma (n_samples,), default=None
Ponderados de muestras.
Nuevo en la versión 0.23.
- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
Notas
El descenso de coordenada es un algoritmo que considera una columna de los datos a la vez, por lo que automáticamente convertirá la entrada X a un arreglo de numpy Fortran-contiguo si es necesario.
Para evitar la reasignación de memoria se aconseja asignar los datos iniciales en la memoria directamente usando ese formato.
- 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
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.
- Parámetros
- 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 entoncesX
puede ser disperso.- y{array-like, sparse matrix} de forma (n_samples,), o (n_samples, n_outputs)
Valores objetivo.
- l1_ratioflotante, 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 quealpha_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.
- Parámetros
- 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 dey
, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0,0.- Parámetros
- 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)
, donden_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 ay
.
Notas
La puntuación \(R^2\) utilizada al llamar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la coherencia con el valor predeterminado der2_score`
. Esto influye en el métodoscore
de todos los regresores de salida múltiple (excepto paraMultiOutputRegressor
).
- 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.
- property sparse_coef_¶
Representación dispersa del
coef_
ajustado.