sklearn.linear_model.lasso_path

sklearn.linear_model.lasso_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 usar una matriz de Gram precalculada para acelerar los cálculos. Si se establece como 'auto', nosotros decidimos. La matriz de Gram también puede 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 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.

verbosebooleano o entero, 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]]

Ejemplos utilizando sklearn.linear_model.lasso_path