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 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 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]]