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 que alpha_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 utiliza StandardScaler antes de invocar a fit en un estimador con normalize=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 que tol.

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.

  • separador de CV,

  • 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 contexto joblib.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.

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

fit

Ajusta el modelo lineal con el descenso coordinado.

get_params

Obtiene los parámetros para este estimador.

path

Calcula el camino Lasso con el descenso coordinado

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()

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 entonces X 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 que alpha_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 de y, 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), 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

Ponderaciones de la muestra.

Devuelve
scorefloat

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

Notas

La puntuación \(R^2\) utilizada al invocar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la consistencia 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.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

Ejemplos utilizando sklearn.linear_model.LassoCV