lars_path_gram#
- sklearn.linear_model.lars_path_gram(Xy, Gram, *, n_samples, 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)#
lars_path 在充分统计模式下。
对于方法 ‘lasso’ 的优化目标是:
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
对于方法 ‘lar’ 的情况,目标函数仅以隐式方程的形式已知(参见 [1] 中的讨论)。
在 用户指南 中阅读更多内容。
- Parameters:
- Xyndarray of shape (n_features,)
Xy = X.T @ y
。- Gramndarray of shape (n_features, n_features)
Gram = X.T @ X
。- n_samplesint
样本的等效大小。
- max_iterint, default=500
要执行的最大迭代次数,设置为无穷大表示无限制。
- alpha_minfloat, default=0
路径上的最小相关性。它对应于 Lasso 中的正则化参数 alpha。
- method{‘lar’, ‘lasso’}, default=’lar’
指定返回的模型。选择
'lar'
表示最小角回归,选择'lasso'
表示 Lasso。- copy_Xbool, default=True
如果为
False
,则X
会被覆盖。- epsfloat, default=np.finfo(float).eps
计算 Cholesky 对角因子时的机器精度正则化。对于条件非常差的系统,请增加此值。与某些基于迭代优化的算法中的
tol
参数不同,此参数不控制优化的容差。- copy_Grambool, default=True
如果为
False
,则Gram
会被覆盖。- verboseint, default=0
控制输出的详细程度。
- return_pathbool, default=True
如果
return_path==True
返回整个路径,否则仅返回路径的最后一个点。- return_n_iterbool, default=False
是否返回迭代次数。
- positivebool, default=False
将系数限制为 >= 0。 此选项仅在方法 ‘lasso’ 中允许。请注意,对于较小的 alpha 值,模型系数不会收敛到普通最小二乘解。仅通过逐步 Lars-Lasso 算法达到的最小 alpha 值(
fit_path=True
时alphas_[alphas_ > 0.].min()
)的系数通常与坐标下降 lasso_path 函数的解一致。
- Returns:
- alphasndarray of shape (n_alphas + 1,)
每次迭代中协方差的最大值(绝对值)。
n_alphas
可以是max_iter
、n_features
或路径中alpha >= alpha_min
的节点数,以较小者为准。- activendarray of shape (n_alphas,)
路径结束时的活跃变量索引。
- coefsndarray of shape (n_features, n_alphas + 1)
路径上的系数。
- 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_gram >>> 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_gram(X.T @ y, X.T @ X, n_samples=100) >>> alphas.shape (3,) >>> estimated_coef array([[ 0. , 0. , 0. ], [ 0. , 0. , 0. ], [ 0. , 0. , 0. ], [ 0. , 46.96..., 97.99...], [ 0. , 0. , 45.70...]]) None