sklearn.linear_model
.LassoCV¶
- class sklearn.linear_model.LassoCV¶
Modelo lineal Lasso con ajuste iterativo a lo largo del camino de regularización.
Ver la entrada del glosario para el cross-validation estimator.
El mejor modelo se selecciona mediante validación cruzada.
El objetivo de optimización para Lasso es:
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Lee más en el Manual de usuario.
- Parámetros
- epsfloat, default=1e-3
Longitud del camino.
eps=1e-3
significa quealpha_min / alpha_max = 1e-3
.- n_alphasint, default=100
Número de alfas a lo largo del camino de regularización.
- alphasndarray, default=None
Lista de alfas donde calcula los modelos. Si es
None
los alfas se establecen automáticamente.- fit_interceptbool, default=True
Si se calcula el intercepto para este modelo. Si se establece en False, no se utilizará ningún intercepto en los cálculos (es decir, se espera que los datos estén centrados).
- normalizebool, default=False
Este parámetro es ignorado cuando
fit_intercept
se establece en False. Si es True, los regresores X serán normalizados antes de la regresión restando la media y dividiendo por la norma l2. Si deseas estandarizar, por favor utilizaStandardScaler
antes de invocar afit
en un estimador connormalize=False
.- precompute“auto”, bool o array-like de forma (n_features, n_features), default=”auto”
Si se utiliza una matriz de Gram precalculada para acelerar los cálculos. Si se establece como
'auto'
podemos decidir. La matriz de Gram también se puede pasar como argumento.- max_iterint, default=1000
El 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 optimización de la brecha dual y continúa hasta que es menor quetol
.- copy_Xbool, default=True
Si es
True
, X se copiará; si no, puede ser sobrescrito.- cvint, 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 utilizar la validación cruzada de 5 partes por defecto,
entero (int), para especificar el número de partes.
Un iterable que produce divisiones (train, test) como arreglos de índices.
Para entradas None/entero se utiliza
KFold
.Consulta el Manual de usuario para las diversas estrategias de validación cruzada que pueden ser utilizadas aquí.
Distinto en la versión 0.22: El valor predeterminado de
cv
, None, cambió de 3 partes a 5 partes.- verbosebool o int, default=False
Cantidad de verbosidad.
- n_jobsint, default=None
Número de CPUs a utilizar durante la validación cruzada.
None
significa 1 a menos que esté en un contextojoblib.parallel_backend
.-1
significa utilizar todos los procesadores. Ver el Glosario para más detalles.- positivebool, default=False
Si es positivo, restringe los coeficientes de regresión para que sean positivos.
- random_stateentero, instancia de RandomState, default=None
La semilla del generador de números pseudoaleatorios que selecciona una característica aleatoria a actualizar. Se utiliza cuando
selection
==”random”. Pasa un número entero (int) para una salida reproducible a través de multiples invocaciones a la función. Ver Glosario.- selection{“cyclic”, “random”}, default=”cyclic”
Si se establece en “random”, un coeficiente aleatorio es actualizado cada iteración en lugar de hacer un bucle sobre las características de forma secuencial por defecto. Esto (establecerlo en “random”) a menudo conduce a una convergencia significativamente mas rápida especialmente cuando tol es mayor que 1e-4.
- Atributos
- alpha_float
La cantidad de penalización elegida por la validación cruzada.
- coef_ndarray de forma (n_features,) o (n_targets, n_features)
Vector de parámetros (w en la fórmula de la función de coste).
- intercept_float o ndarray de forma (n_targets,)
Término independiente en la función de decisión.
- mse_path_ndarray de forma (n_alphas, n_folds)
Error cuadrático medio para el conjunto de prueba en cada parte, variando alfa (alpha).
- alphas_ndarray de forma (n_alphas,)
La cuadrícula de alfas utilizada para el ajuste.
- dual_gap_float o ndarray de forma (n_targets,)
La brecha dual al final de la optimización para el alfa óptimo (
alpha_
).- n_iter_int
Número de iteraciones ejecutadas por el solucionador de descenso coordinado para alcanzar la tolerancia especificada para el alfa óptimo.
Ver también
Notas
Para un ejemplo, ver examples/linear_model/plot_lasso_model_selection.py.
Para evitar la duplicación innecesaria de memoria, el argumento X del método fit debe pasarse directamente como un arreglo numpy Fortran-contiguos.
Ejemplos
>>> from sklearn.linear_model import LassoCV >>> from sklearn.datasets import make_regression >>> X, y = make_regression(noise=4, random_state=0) >>> reg = LassoCV(cv=5, random_state=0).fit(X, y) >>> reg.score(X, y) 0.9993... >>> reg.predict(X[:1,]) array([-78.4951...])
Métodos
Ajusta el modelo lineal con el descenso coordinado.
Obtiene los parámetros para este estimador.
Calcula el camino Lasso con el descenso coordinado
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 lineal con el descenso coordinado.
El ajuste es en la cuadrícula de alfas y la mejor alfa estimada por validación cruzada.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Datos de entrenamiento. Pasa directamente como datos Fortran-contiguos para evitar la duplicación innecesaria de memoria. Si y es monosalida 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.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Los nombres de los parámetros mapeados a sus valores.
- static path()¶
Calcula el camino Lasso con el descenso coordinado
La función de optimización Lasso varía para monosalidas y multisalidas.
Para tareas monosalida es:
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Para tareas multi-salida es:
(1 / (2 * n_samples)) * ||Y - XW||^2_Fro + alpha * ||W||_21
Donde:
||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}
es decir, la suma de la norma de cada fila.
Lee más en el Manual de usuario.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Datos de entrenamiento. Pasa directamente como datos Fortran-contiguos para evitar la duplicación innecesaria de memoria. Si
y
es monosalida entoncesX
puede ser disperso.- y{array-like, sparse matrix} de forma (n_samples,) o (n_samples, n_outputs)
Valores objetivo
- epsfloat, default=1e-3
Longitud del camino.
eps=1e-3
significa quealpha_min / alpha_max = 1e-3
- n_alphasint, default=100
Número de alfas a lo largo del camino de regularización
- alphasndarray, default=None
Lista de alfas donde calcula 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 se utiliza una matriz de Gram precalculada para acelerar los cálculos. Si se establece como
'auto'
podemos decidir. La matriz de Gram también se puede pasar como 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 de Gram está precalculada.
- copy_Xbool, 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 int, default=False
Cantidad de verbosidad.
- return_n_iterbool, default=False
si se devuelve o no el número de iteraciones.
- positivebool, default=False
Si se establece como True, obliga a los coeficientes a ser positivos. (Sólo se permite cuando
y.ndim ==1
).- **paramskwargs
argumentos de la palabra clave que se pasan al solucionador del descenso coordinado.
- 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,)
Las brechas duales al final de la optimización para cada alfa.
- n_iterslist de int
El número de iteraciones que toma el optimizador de descenso coordinado para alcanzar la tolerancia especificada para cada alfa.
Notas
Para un ejemplo, consulta examples/linear_model/plot_lasso_coordinate_descent_path.py.
Para evitar la duplicación innecesaria de memoria, el argumento X del método fit debe pasarse directamente como un arreglo numpy Fortran-contiguos.
Ten en cuenta que en ciertos casos, el solucionador de Lars puede ser significativamente más rápido para implementar esta funcionalidad. En particular, se puede utilizar la interpolación lineal para recuperar los coeficientes del modelo entre los valores de salida de lars_path
Ejemplos
Comparación de lasso_path y lars_path con interpolación:
>>> X = np.array([[1, 2, 3.1], [2.3, 5.4, 4.3]]).T >>> y = np.array([1, 2, 3.1]) >>> # Use lasso_path to compute a coefficient path >>> _, coef_path, _ = lasso_path(X, y, alphas=[5., 1., .5]) >>> print(coef_path) [[0. 0. 0.46874778] [0.2159048 0.4425765 0.23689075]]
>>> # Now use lars_path and 1D linear interpolation to compute the >>> # same path >>> from sklearn.linear_model import lars_path >>> alphas, active, coef_path_lars = lars_path(X, y, method='lasso') >>> from scipy import interpolate >>> coef_path_continuous = interpolate.interp1d(alphas[::-1], ... coef_path_lars[:, ::-1]) >>> print(coef_path_continuous([5., 1., .5])) [[0. 0. 0.46915237] [0.2159048 0.4425765 0.23668876]]
- predict()¶
Predice utilizando el modelo lineal.
- Parámetros
- Xarray-like o matriz dispersa, de 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 de cuadrados de los residuos
((y_true - y_pred) ** 2).sum()
y \(v\) es la suma de cuadrados total((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
Ponderaciones de la muestra.
- Devuelve
- scorefloat
\(R^2\) de
self.predict(X)
con respecto ay
.
Notas
La puntuación \(R^2\) utilizada al invocar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la consistencia 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.