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矩阵,即不能为None
或False
。- 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_alphas
是max_iter
、n_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
[1]“Least Angle Regression”, Efron et al. http://statweb.stanford.edu/~tibs/ftp/lars.pdf
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...]])