sklearn.linear_model.lars_path(X, y, Xy=None, *, Gram=None, max_iter=500, alpha_min=0, method='lar', copy_X=True, eps=np.float64(2.220446049250313e-16), copy_Gram=True, verbose=0, return_path=True, return_n_iter=False, positive=False)[source]#

Compute Least Angle Regression or Lasso path using the LARS algorithm.

The optimization objective for the case method=’lasso’ is:

(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1

in the case of method=’lar’, the objective function is only known in the form of an implicit equation (see discussion in [1]).

Read more in the User Guide.

XNone or ndarray of shape (n_samples, n_features)

Input data. Note that if X is None then the Gram matrix must be specified, i.e., cannot be None or False.

yNone or ndarray of shape (n_samples,)

Input targets.

Xyarray-like of shape (n_features,), default=None

Xy = X.T @ y that can be precomputed. It is useful only when the Gram matrix is precomputed.

GramNone, ‘auto’, bool, ndarray of shape (n_features, n_features), default=None

Precomputed Gram matrix X.T @ X, if 'auto', the Gram matrix is precomputed from the given X, if there are more samples than features.

max_iterint, default=500

Maximum number of iterations to perform, set to infinity for no limit.

alpha_minfloat, default=0

Minimum correlation along the path. It corresponds to the regularization parameter alpha in the Lasso.

method{‘lar’, ‘lasso’}, default=’lar’

Specifies the returned model. Select 'lar' for Least Angle Regression, 'lasso' for the Lasso.

copy_Xbool, default=True

If False, X is overwritten.

epsfloat, default=np.finfo(float).eps

The machine-precision regularization in the computation of the Cholesky diagonal factors. Increase this for very ill-conditioned systems. Unlike the tol parameter in some iterative optimization-based algorithms, this parameter does not control the tolerance of the optimization.

copy_Grambool, default=True

If False, Gram is overwritten.

verboseint, default=0

Controls output verbosity.

return_pathbool, default=True

If True, returns the entire path, else returns only the last point of the path.

return_n_iterbool, default=False

Whether to return the number of iterations.

positivebool, default=False

Restrict coefficients to be >= 0. This option is only allowed with method ‘lasso’. Note that the model coefficients will not converge to the ordinary-least-squares solution for small values of alpha. Only coefficients up to the smallest alpha value (alphas_[alphas_ > 0.].min() when fit_path=True) reached by the stepwise Lars-Lasso algorithm are typically in congruence with the solution of the coordinate descent lasso_path function.

alphasndarray of shape (n_alphas + 1,)

Maximum of covariances (in absolute value) at each iteration. n_alphas is either max_iter, n_features, or the number of nodes in the path with alpha >= alpha_min, whichever is smaller.

activendarray of shape (n_alphas,)

Indices of active variables at the end of the path.

coefsndarray of shape (n_features, n_alphas + 1)

Coefficients along the path.


Number of iterations run. Returned only if return_n_iter is set to True.

See also


Compute LARS path in the sufficient stats mode.


Compute Lasso path with coordinate descent.


Lasso model fit with Least Angle Regression a.k.a. Lars.


Least Angle Regression model a.k.a. LAR.


Cross-validated Lasso, using the LARS algorithm.


Cross-validated Least Angle Regression model.


Sparse coding.



>>> from sklearn.linear_model import lars_path
>>> from sklearn.datasets import make_regression
>>> X, y, true_coef = make_regression(
...    n_samples=100, n_features=5, n_informative=2, coef=True, random_state=0
... )
>>> true_coef
array([ 0.        ,  0.        ,  0.        , 97.9..., 45.7...])
>>> alphas, _, estimated_coef = lars_path(X, y)
>>> alphas.shape
>>> estimated_coef
array([[ 0.     ,  0.     ,  0.     ],
       [ 0.     ,  0.     ,  0.     ],
       [ 0.     ,  0.     ,  0.     ],
       [ 0.     , 46.96..., 97.99...],
       [ 0.     ,  0.     , 45.70...]])