enet_path#

sklearn.linear_model.enet_path(X, y, *, l1_ratio=0.5, eps=0.001, n_alphas=100, alphas=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, positive=False, check_input=True, **params)[源代码]#

使用坐标下降法计算弹性网络路径。

弹性网络优化函数因单输出和多输出任务而异。

对于单输出任务,它是

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

对于多输出任务,它是

(1 / (2 * n_samples)) * ||Y - XW||_Fro^2
+ alpha * l1_ratio * ||W||_21
+ 0.5 * alpha * (1 - l1_ratio) * ||W||_Fro^2

其中

||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}

即每行范数的总和。

用户指南中阅读更多。

参数:
X{类数组, 稀疏矩阵},形状为 (n_samples, n_features)

训练数据。直接传递为Fortran连续数据以避免不必要的内存复制。如果y是单输出,则X可以是稀疏的。

y{类数组, 稀疏矩阵},形状为 (n_samples,) 或 (n_samples, n_targets)

目标值。

l1_ratio浮点数, 默认值=0.5

传递给弹性网络(L1和L2惩罚之间的缩放)的0到1之间的数字。l1_ratio=1对应于Lasso。

eps浮点数, 默认值=1e-3

路径的长度。eps=1e-3表示alpha_min / alpha_max = 1e-3

n_alphas整型, 默认值=100

正则化路径上的alpha数量。

alphas类数组, 默认值=None

计算模型的alpha列表。如果为None,alpha将自动设置。

precompute‘auto’, 布尔值或类数组,形状为 (n_features, n_features), 默认值=‘auto’

是否使用预计算的Gram矩阵来加速计算。如果设置为'auto',则由系统决定。Gram矩阵也可以作为参数传递。

Xy类数组,形状为 (n_features,) 或 (n_features, n_targets), 默认值=None

Xy = np.dot(X.T, y) 可以预先计算。仅当Gram矩阵预计算时才有用。

copy_X布尔值, 默认值=True

如果为True,X将被复制;否则,它可能会被覆盖。

coef_init类数组,形状为 (n_features, ), 默认值=None

系数的初始值。

verbose布尔值或整型, 默认值=False

冗余信息的数量。

return_n_iter布尔值, 默认值=False

是否返回迭代次数。

positive布尔值, 默认值=False

如果设置为True,强制系数为正。(仅当y.ndim == 1时允许)。

check_input布尔值, 默认值=True

如果设置为False,则跳过输入验证检查(包括在提供Gram矩阵时)。假定它们由调用方处理。

**params关键字参数

传递给坐标下降求解器的关键字参数。

返回:
alphas形状为 (n_alphas,) 的ndarray

在计算模型的路径上的alpha值。

coefs形状为 (n_features, n_alphas) 或 (n_targets, n_features, n_alphas) 的ndarray

沿路径的系数。

dual_gaps形状为 (n_alphas,) 的ndarray

每个alpha在优化结束时的对偶间隙。

n_iters整型列表

坐标下降优化器为每个alpha达到指定容差所花费的迭代次数。(当return_n_iter设置为True时返回)。

另请参阅

MultiTaskElasticNet

使用L1/L2混合范数作为正则化器训练的多任务弹性网络模型。

MultiTaskElasticNetCV

带有内置交叉验证的多任务L1/L2弹性网络。

ElasticNet

结合L1和L2先验作为正则化器的线性回归。

ElasticNetCV

沿正则化路径迭代拟合的弹性网络模型。

注意

有关示例,请参阅examples/linear_model/plot_lasso_lasso_lars_elasticnet_path.py

示例

>>> from sklearn.linear_model import enet_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, _ = enet_path(X, y, n_alphas=3)
>>> alphas.shape
(3,)
>>> estimated_coef
 array([[ 0.,  0.787,  0.568],
        [ 0.,  1.120,  0.620],
        [-0., -2.129, -1.128],
        [ 0., 23.046, 88.939],
        [ 0., 10.637, 41.566]])