弹性网络

作者:管理员 发布时间:2021-01-30 10:06

    弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。 这种组合允许拟合到一个只有少量参数是非零稀疏的模型,就像 套索回归 一样,但是它仍然保持了一些类似于 岭回归 的正则性质。

    弹性网络在很多特征互相联系的情况下是非常有用的。套索回归 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。
    在实践中,套索回归 和 岭回归 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 岭回归 的稳定性。



函数介绍:

ElasticNetCV(*, l1_ratio=0.5, eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, normalize=False, precompute='auto', max_iter=1000, tol=0.0001, cv=None, copy_X=True, verbose=0, n_jobs=None, positive=False, random_state=None, selection='cyclic')

l1_ratio float或float列表,默认= 0.5
在0和1之间的float传递给ElasticNet(在l1和l2罚分之间缩放)。对于 罚款是L2罚款。因为这是L1罚款。对于,惩罚是L1和L2的组合。此参数可以是一个列表,在这种情况下,通过交叉验证测试不同的值,并使用给出最佳预测得分的值。请注意,最好选择l1_ratio的值列表,例如,将更多的值设置为接近1(即套索),少设置为0(即Ridge)。l1_ratio = 0l1_ratio = 10 < l1_ratio < 1[.1, .5, .7, .9, .95, .99, 1]


eps float,默认值= 1e-3

路径的长度。eps=1e-3意味着 。alpha_min / alpha_max = 1e-3

n_alphas int,默认= 100
沿着正则化路径的Alpha数,用于每个l1_ratio。

alphas ndarray,默认=无
用于计算模型的Alpha列表。如果没有,则自动设置Alpha。

fit_intercept bool,默认为True
是否计算此模型的截距。如果设置为false,则在计算中将不使用截距(即,数据应居中)。

normalize,默认= False

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

precompute   'auto',形状为布尔型或类似数组(n_features,n_features),默认为'auto'
是否使用预先计算的Gram矩阵来加快计算速度。如果设置'auto'让我们决定。语法矩阵也可以作为参数传递。

max_iter int,默认= 1000
最大迭代次数。

tol float,默认= 1e-4
优化的容限:如果更新小于tol,则优化代码将检查对偶间隙是否达到最佳,并继续进行,直到小于tol。

cv int,交叉验证生成器或可迭代,默认=无

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

verbose  ,默认值= 0
详细程度。

n_jobs   int,默认=无
交叉验证期间要使用的CPU数量。 None除非joblib.parallel_backend上下文中,否则表示1 。 -1表示使用所有处理器。有关 更多详细信息,请参见词汇表。

positive  ,默认= False
设置为时True,强制系数为正。

random_state   int,RandomState实例,默认=无
选择随机特征进行更新的伪随机数生成器的种子。在selection=='random'时使用。为多个函数调用传递可重复输出的int值。请参阅词汇表。

selection  {'cyclic','random'},默认='cyclic'
如果设置为“随机”,则随机系数将在每次迭代时更新,而不是默认情况下按顺序遍历要素。这(设置为“随机”)通常会导致收敛更快,尤其是当tol高于1e-4时。


实例:

sklearn.datasets中已经帮我们预存了一些学习使用的数据集,用make_regression 生成回归模型的数据。这里我们使用make_regression生成回归模型数据。

几个关键参数有

n_samples(生成样本数),

n_features(样本特征数),

noise(样本随机噪音),

coef(是否返回回归系数

>>> from sklearn.linear_model import ElasticNetCV
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0) #生成线性数据
>>> regr = ElasticNetCV(cv=5, random_state=0) #实例化弹性网络算法
>>> regr.fit(X, y) #拟合数据,获得模型
ElasticNetCV(cv=5, random_state=0)
>>> print(regr.alpha_) #通过交叉验证选择的惩罚量
0.199...
>>> print(regr.intercept_) #决策功能中的独立项
0.398...
>>> print(regr.predict([[0, 0]])) #使用模型进行预测
[0.398...]


标签:
Copyright © 2020 万物律动 旗下 AI算法狮 京ICP备20010037号-1
本站内容来源于网络开放内容的收集整理,并且仅供学习交流使用;
如有侵权,请联系删除相关内容;