当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn ElasticNet用法及代码示例


本文简要介绍python语言中 sklearn.linear_model.ElasticNet 的用法。

用法:

class sklearn.linear_model.ElasticNet(alpha=1.0, *, l1_ratio=0.5, fit_intercept=True, normalize='deprecated', precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')

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

最小化目标函数:

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

如果您有兴趣分别控制 L1 和 L2 惩罚,请记住这相当于:

a * ||w||_1 + 0.5 * b * ||w||_2^2

其中:

alpha = a + b and l1_ratio = a / (a + b)

参数 l1_ratio 对应于 glmnet R 包中的 alpha,而 alpha 对应于 glmnet 中的 lambda 参数。具体来说,l1_ratio = 1 是套索惩罚。目前,l1_ratio <= 0.01 不可靠,除非您提供自己的 alpha 序列。

在用户指南中阅读更多信息。

参数

alpha浮点数,默认=1.0

乘以惩罚项的常数。默认为 1.0。有关此参数的确切数学含义,请参见注释。 alpha = 0 相当于普通的最小二乘,由 LinearRegression 对象解决。出于数字原因,不建议将 alpha = 0Lasso 对象一起使用。鉴于此,您应该使用 LinearRegression 对象。

l1_ratio浮点数,默认=0.5

ElasticNet 混合参数,带有 0 <= l1_ratio <= 1 。对于l1_ratio = 0,惩罚是 L2 惩罚。 For l1_ratio = 1 这是 L1 惩罚。对于 0 < l1_ratio < 1 ,惩罚是 L1 和 L2 的组合。

fit_intercept布尔,默认=真

是否应该估计截距。如果 False ,则假定数据已经居中。

normalize布尔,默认=假

fit_intercept 设置为 False 时忽略此参数。如果为 True,则回归量 X 将在回归前通过减去均值并除以 l2 范数进行归一化。如果您希望标准化,请在使用 normalize=False 对估计器调用 fit 之前使用 StandardScaler

precompute布尔型或类似数组的形状 (n_features, n_features),默认=False

是否使用预先计算的 Gram 矩阵来加速计算。 Gram 矩阵也可以作为参数传递。对于稀疏输入,此选项始终为 False 以保持稀疏性。

max_iter整数,默认=1000

最大迭代次数。

copy_X布尔,默认=真

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

tol浮点数,默认=1e-4

优化的容差:如果更新小于 tol ,则优化代码检查对偶间隙的最优性并继续直到它小于 tol

warm_start布尔,默认=假

当设置为 True 时,重用先前调用的解决方案以适合作为初始化,否则,只需擦除先前的解决方案。请参阅词汇表。

positive布尔,默认=假

当设置为 True 时,强制系数为正。

random_stateint,RandomState 实例,默认=无

选择要更新的随机特征的伪随机数生成器的种子。当selection == ‘random’ 时使用。传递 int 以获得跨多个函数调用的可重现输出。请参阅词汇表。

selection{‘cyclic’, ‘random’},默认='循环'

如果设置为‘random’,则每次迭代都会更新随机系数,而不是默认情况下按顺序循环特征。这(设置为‘random’)通常会导致收敛速度显著加快,尤其是当 tol 高于 1e-4 时。

属性

coef_ndarray 形状 (n_features,) 或 (n_targets, n_features)

参数向量(成本函数公式中的 w)。

sparse_coef_形状为 (n_features,) 或 (n_targets, n_features) 的稀疏矩阵

拟合 coef_ 的稀疏表示。

intercept_形状的浮点数或 ndarray (n_targets,)

决策函数中的独立项。

n_iter_int列表

坐标下降求解器为达到指定容差而运行的迭代次数。

dual_gap_形状的浮点数或 ndarray (n_targets,)

给定参数 alpha,优化结束时的对偶间隙,形状与 y 的每个观察值相同。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

注意

为避免不必要的内存重复,fit 方法的 X 参数应直接作为 Fortran-contiguous numpy 数组传递。

例子

>>> from sklearn.linear_model import ElasticNet
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0)
>>> regr = ElasticNet(random_state=0)
>>> regr.fit(X, y)
ElasticNet(random_state=0)
>>> print(regr.coef_)
[18.83816048 64.55968825]
>>> print(regr.intercept_)
1.451...
>>> print(regr.predict([[0, 0]]))
[1.451...]

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.linear_model.ElasticNet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。