lars_path#

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

计算最小角回归或Lasso路径使用LARS算法。

对于method=’lasso’的情况,优化目标为:

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

在method=’lar’的情况下,目标函数仅以隐式方程的形式已知(见[R2391cff0bbde-1]_中的讨论)。

更多信息请参阅 用户指南

Parameters:
XNone或形状为(n_samples, n_features)的ndarray

输入数据。注意,如果X是 None ,则必须指定Gram矩阵,即不能为 NoneFalse

yNone或形状为(n_samples,)的ndarray

输入目标。

Xy形状为(n_features,)的类数组,默认=None

Xy = X.T @ y 可以预先计算。只有在预计算Gram矩阵时才有用。

GramNone, ‘auto’, bool, 形状为(n_features, n_features)的ndarray, 默认=None

预计算的Gram矩阵 X.T @ X ,如果为 'auto' ,则从给定的X预计算Gram矩阵,如果样本数多于特征数。

max_iterint, 默认=500

要执行的最大迭代次数,设置为无穷大表示无限制。

alpha_minfloat, 默认=0

沿路径的最小相关性。它对应于Lasso中的正则化参数 alpha

method{‘lar’, ‘lasso’}, 默认=’lar’

指定返回的模型。选择 'lar' 表示最小角回归, 'lasso' 表示Lasso。

copy_Xbool, 默认=True

如果为 False ,则覆盖 X

epsfloat, 默认=np.finfo(float).eps

计算Cholesky对角因子时的机器精度正则化。对于非常病态的系统,增加此值。与某些基于迭代优化的算法中的 tol 参数不同,此参数不控制优化的容差。

copy_Grambool, 默认=True

如果为 False ,则覆盖 Gram

verboseint, 默认=0

控制输出详细程度。

return_pathbool, 默认=True

如果为 True ,则返回整个路径,否则只返回路径的最后一个点。

return_n_iterbool, 默认=False

是否返回迭代次数。

positivebool, 默认=False

限制系数为>= 0。此选项仅允许在method=’lasso’时使用。请注意,对于较小的alpha值,模型系数不会收敛到普通最小二乘解。只有Lars-Lasso算法达到的最小alpha值(当fit_path=True时为 alphas_[alphas_ > 0.].min() )的系数通常与坐标下降 lasso_path 函数的解一致。

Returns:
alphas形状为(n_alphas + 1,)的ndarray

每次迭代时协方差的最大值(绝对值)。 n_alphasmax_itern_features 或路径中 alpha >= alpha_min 的节点数中的最小值。

active形状为(n_alphas,)的ndarray

路径结束时活动变量的索引。

coefs形状为(n_features, n_alphas + 1)的ndarray

沿路径的系数。

n_iterint

运行的迭代次数。仅当 return_n_iter 设置为True时返回。

See also

lars_path_gram

在充分统计模式下计算LARS路径。

lasso_path

使用坐标下降计算Lasso路径。

LassoLars

使用最小角回归(又名Lars)拟合的Lasso模型。

Lars

最小角回归模型(又名LAR)。

LassoLarsCV

使用LARS算法的交叉验证Lasso。

LarsCV

交叉验证的最小角回归模型。

sklearn.decomposition.sparse_encode

稀疏编码。

References

Examples

>>> 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
(3,)
>>> estimated_coef
array([[ 0.     ,  0.     ,  0.     ],
       [ 0.     ,  0.     ,  0.     ],
       [ 0.     ,  0.     ,  0.     ],
       [ 0.     , 46.96..., 97.99...],
       [ 0.     ,  0.     , 45.70...]])