SGDRegressor#
- class sklearn.linear_model.SGDRegressor(loss='squared_error', *, penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, random_state=None, learning_rate='invscaling', eta0=0.01, power_t=0.25, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, warm_start=False, average=False)[源代码]#
线性模型通过最小化与新元的正规化经验损失来进行。
BCD代表随机梯度下降:每次估计每个样本的损失梯度,并随强度时间表(又名学习率)的递减更新模型。
正规化器是添加到损失函数的惩罚,该函数使用平方欧几里得规范L2或绝对规范L1或两者的组合(弹性网)将模型参数缩小到零载体。如果参数更新因规则化器而超过0.0值,则更新将被截断为0.0,以允许学习稀疏模型并实现在线特征选择。
此实现使用表示为功能的浮点值的密集麻木数组的数据。
阅读更多的 User Guide .
- 参数:
- loss字符串,默认='平方_错误'
要使用的损失函数。可能的值为'squared_error'、' huber '、' squared_insensitive '或'squared_insensitive'
'squared_error'是指普通最小二乘拟合。'huber'修改了'squared_error',减少了对异常值的关注,通过将平方损失切换到线性损失,使其超过1/2的距离。'RISK_insensitive'忽略小于RISK的错误,并且是线性的;这是SVR中使用的损失函数。'squared_error_insensitive'是相同的,但在超过容差的情况下变为平方损失。
有关损失公式的更多详细信息,请参见 User Guide .
- penalty' l2 ',' l1 ',' elasticnet ',无},默认=' l2 '
要使用的惩罚(aka正则化项)。指定为“l2”,这是线性支持者模型的标准正规化器。“l1”和“elasticnet”可能会给模型(特征选择)带来“l2”无法实现的稀疏性。设置为时不增加处罚
None
.您可以在中看到点球的可视化 新元:处罚 .
- alphafloat,默认=0.0001
乘以正规化项的常数。值越高,规则化越强。还用于计算学习率时
learning_rate
设置为“最佳”。值必须在范围内[0.0, inf)
.- l1_ratio浮动,默认=0.15
弹性净混合参数,0 <= l1_ratio <= 1。l1_ratio=0对应于L2罚分,l1_ratio=1到L1。仅在以下情况下使用
penalty
是“弹性网”。值必须在范围内[0.0, 1.0]
.- fit_intercept布尔,默认=True
是否应该估计拦截。如果为False,则假设数据已位于中心。
- max_iterint,默认=1000
训练数据(又名epochs)的最大传递次数。它只会影响
fit
方法,而不是partial_fit
法值必须在范围内[1, inf)
.Added in version 0.19.
- tol浮动或无,默认= 1 e-3
停止标准。如果不是无,则训练将在(loss > best_loss - tol)时停止
n_iter_no_change
连续的时代。根据训练损失或验证损失检查收敛性,具体取决于early_stopping
参数.值必须在范围内[0.0, inf)
.Added in version 0.19.
- shuffle布尔,默认=True
训练数据是否应该在每个历元后进行洗牌。
- verboseint,默认=0
冗长程度。值必须在范围内
[0, inf)
.- epsilonfloat,默认=0.1
Epsilon不敏感损失函数中的Epsilon;仅当
loss
是'huber'、'squared_insensitive'或'squared_insensitive'。对于'huber',确定阈值,在该阈值处,准确预测变得不那么重要。对于ε不敏感,如果当前预测和正确标签之间的任何差异小于此阈值,则忽略它们。值必须在范围内[0.0, inf)
.- random_stateint,RandomState实例,默认=无
用于洗牌数据,当
shuffle
设置为True
.传递int以获得跨多个函数调用的可重复输出。看到 Glossary .- learning_rate字符串,默认=' invscaling '
学习率计划:
“常数”:
eta = eta0
“最佳”:
eta = 1.0 / (alpha * (t + t0))
其中t0是通过Leon Bottou提出的启发式选择的。'invscaling':
eta = eta0 / pow(t, power_t)
“适应性”:eta = eta 0,只要训练不断减少。每当n_iter_no_change连续时期未能将训练损失减少tol或未能将验证分数增加tol(如果early_stoping为True)时,当前学习率将被除以5。
Added in version 0.20: 添加了“自适应”选项。
- eta0浮动,默认=0.01
“constant”、“invscaling”或“adaptive”调度的初始学习率。默认值为0.01。值必须在范围内
[0.0, inf)
.- power_t浮动,默认=0.25
逆缩放学习率的指数。值必须在范围内
(-inf, inf)
.- early_stopping布尔,默认=假
当验证分数没有提高时,是否使用提前停止来终止培训。如果设置为True,它将自动保留一部分训练数据作为验证,并在返回验证分数时终止训练
score
方法至少没有改进tol
为n_iter_no_change
连续的时代。看到 随机梯度下降的早停止 作为提前停止影响的一个例子。
Added in version 0.20: 添加了“early_stopping”选项
- validation_fractionfloat,默认=0.1
预留作为提前停止验证的训练数据比例。必须介于0和1之间。仅在以下情况下使用
early_stopping
是真的值必须在范围内(0.0, 1.0)
.Added in version 0.20: 添加了“validation_fraction”选项
- n_iter_no_changeint,默认=5
在停止拟合之前等待的没有改进的迭代次数。根据训练损失或验证损失检查收敛性,具体取决于
early_stopping
参数.收件箱值必须在范围内[1, max_iter)
.Added in version 0.20: 添加了“n_iter_no_change”选项
- warm_start布尔,默认=假
When set to True, reuse the solution of the previous call to fit as initialization, otherwise, just erase the previous solution. See the Glossary.
由于数据洗牌的方式,当warm_start为True时重复调用fit或partial_fit可能会导致与单次调用fit不同的解决方案。如果使用动态学习率,则学习率根据已看到的样本数量进行调整。调用
fit
重置此计数器,而partial_fit
将导致现有计数器的增加。- averagebool或int,默认=False
当设置为True时,计算所有更新的平均Singapore权重,并将结果存储在
coef_
属性如果设置为大于1的int,则一旦看到的样本总数达到,就会开始求平均average
.所以average=10
将在看到10个样本后开始求平均值。
- 属性:
- coef_形状的nd数组(n_features,)
分配给要素的权重。
- intercept_形状的nd数组(1,)
拦截项。
- n_iter_int
达到停止标准之前的实际迭代次数。
- t_int
训练期间执行的体重更新次数。相同
(n_iter_ * n_samples + 1)
.- n_features_in_int
期间看到的功能数量 fit .
Added in version 0.24.
- feature_names_in_ :nd形状数组 (
n_features_in_
,)nd数组形状( Names of features seen during fit. Defined only when
X
has feature names that are all strings.Added in version 1.0.
参见
HuberRegressor
对异常值稳健的线性回归模型。
Lars
最小角回归模型。
Lasso
线性模型使用L1之前作为正规化器进行训练。
RANSACRegressor
RANSAC (RANdom SAmple Consensus) algorithm.
Ridge
Linear least squares with l2 regularization.
sklearn.svm.SVR
Epsilon-支持向量回归。
TheilSenRegressor
Theil-Sen估计稳健多元回归模型。
示例
>>> import numpy as np >>> from sklearn.linear_model import SGDRegressor >>> from sklearn.pipeline import make_pipeline >>> from sklearn.preprocessing import StandardScaler >>> n_samples, n_features = 10, 5 >>> rng = np.random.RandomState(0) >>> y = rng.randn(n_samples) >>> X = rng.randn(n_samples, n_features) >>> # Always scale the input. The most convenient way is to use a pipeline. >>> reg = make_pipeline(StandardScaler(), ... SGDRegressor(max_iter=1000, tol=1e-3)) >>> reg.fit(X, y) Pipeline(steps=[('standardscaler', StandardScaler()), ('sgdregressor', SGDRegressor())])
- densify()[源代码]#
将系数矩阵转换为密集数组格式。
转换
coef_
member(back)to a numpy.ndarray.这是coef_
并且是装配所需的,因此仅需要对之前已精简的模型调用此方法;否则,这是不操作的。- 返回:
- 自我
拟合估计量。
- fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[源代码]#
使用随机梯度下降拟合线性模型。
- 参数:
- X{类数组,稀疏矩阵},形状(n_samples,n_features)
训练数据。
- y形状的nd数组(n_samples,)
目标值。
- coef_init形状的nd数组(n_features,),默认=无
热启动优化的初始系数。
- intercept_init形状的nd数组(1,),默认=无
热启动优化的初始拦截。
- sample_weight类似阵列,形状(n_samples,),默认=无
应用于单个样本的权重(1.对于未加权)。
- 返回:
- self对象
装配
SGDRegressor
估计者。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- partial_fit(X, y, sample_weight=None)[源代码]#
对给定样本执行一个周期的随机梯度下降。
在内部,这种方法使用
max_iter = 1
.因此,不能保证在调用一次之后达到成本函数的最小值。客观收敛、提前停止等事宜应由用户自行处理。- 参数:
- X{类数组,稀疏矩阵},形状(n_samples,n_features)
训练数据子集。
- y形状的麻木数组(n_samples,)
目标值的子集。
- sample_weight类似阵列,形状(n_samples,),默认=无
应用于单个样本的权重。如果未提供,则假设均匀的权重。
- 返回:
- self对象
返回自我的实例。
- predict(X)[源代码]#
Predict using the linear model.
- 参数:
- X{类数组,稀疏矩阵},形状(n_samples,n_features)
输入数据。
- 返回:
- 形状的nd数组(n_samples,)
X中每个元素的预测目标值。
- score(X, y, sample_weight=None)[源代码]#
返回预测的决定系数。
决定系数 \(R^2\) 被定义为 \((1 - \frac{u}{v})\) ,在哪里 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
和 \(v\) 是平方总和((y_true - y_true.mean()) ** 2).sum()
.最好的可能分数是1.0,并且可以是负的(因为模型可以任意更差)。始终预测的期望值的恒定模型y
如果不考虑输入功能,就会得到 \(R^2\) 评分0.0。- 参数:
- X形状类似阵列(n_samples,n_features)
Test samples. For some estimators this may be a precomputed kernel matrix or a list of generic objects instead with shape
(n_samples, n_samples_fitted)
, wheren_samples_fitted
is the number of samples used in the fitting for the estimator.- y形状的类似阵列(n_samples,)或(n_samples,n_outputs)
真正的价值观
X
.- sample_weight形状类似数组(n_samples,),默认=无
样本重量。
- 返回:
- score浮子
\(R^2\) 的
self.predict(X)
w.r.t.y
.
注意到
的 \(R^2\) 呼叫时使用的分数
score
在回归器上使用multioutput='uniform_average'
从0.23版本开始,与默认值保持一致r2_score
.这影响了score
所有多输出回归器的方法(除了MultiOutputRegressor
).
- set_fit_request(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor [源代码]#
请求元数据传递给
fit
法请注意,此方法仅适用于以下情况
enable_metadata_routing=True
(见sklearn.set_config
).请参阅 User Guide 关于路由机制如何工作。The options for each parameter are:
True
:元数据被请求并传递给fit
如果提供的话。如果未提供元数据,则会忽略请求。False
:未请求元数据,元估计器不会将其传递给fit
.None
:不请求元数据,如果用户提供元估计器,则元估计器将引发错误。str
:元数据应通过此给定别名而不是原始名称传递给元估计器。
默认 (
sklearn.utils.metadata_routing.UNCHANGED
)保留现有请求。这允许您更改某些参数的请求,而不是其他参数。Added in version 1.3.
备注
只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在
Pipeline
.否则就没有效果了。- 参数:
- coef_init字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
coef_init
参数fit
.- intercept_init字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
intercept_init
参数fit
.- sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
sample_weight
参数fit
.
- 返回:
- self对象
更新的对象。
- set_params(**params)[源代码]#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
).后者具有以下形式的参数<component>__<parameter>
以便可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计参数。
- 返回:
- self估计器实例
估计实例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor [源代码]#
请求元数据传递给
partial_fit
法请注意,此方法仅适用于以下情况
enable_metadata_routing=True
(见sklearn.set_config
).请参阅 User Guide 关于路由机制如何工作。The options for each parameter are:
True
:元数据被请求并传递给partial_fit
如果提供的话。如果未提供元数据,则会忽略请求。False
:未请求元数据,元估计器不会将其传递给partial_fit
.None
:不请求元数据,如果用户提供元估计器,则元估计器将引发错误。str
:元数据应通过此给定别名而不是原始名称传递给元估计器。
默认 (
sklearn.utils.metadata_routing.UNCHANGED
)保留现有请求。这允许您更改某些参数的请求,而不是其他参数。Added in version 1.3.
备注
只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在
Pipeline
.否则就没有效果了。- 参数:
- sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
sample_weight
参数partial_fit
.
- 返回:
- self对象
更新的对象。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') SGDRegressor [源代码]#
请求元数据传递给
score
法请注意,此方法仅适用于以下情况
enable_metadata_routing=True
(见sklearn.set_config
).请参阅 User Guide 关于路由机制如何工作。The options for each parameter are:
True
:元数据被请求并传递给score
如果提供的话。如果未提供元数据,则会忽略请求。False
:未请求元数据,元估计器不会将其传递给score
.None
:不请求元数据,如果用户提供元估计器,则元估计器将引发错误。str
:元数据应通过此给定别名而不是原始名称传递给元估计器。
默认 (
sklearn.utils.metadata_routing.UNCHANGED
)保留现有请求。这允许您更改某些参数的请求,而不是其他参数。Added in version 1.3.
备注
只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在
Pipeline
.否则就没有效果了。- 参数:
- sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
sample_weight
参数score
.
- 返回:
- self对象
更新的对象。
- sparsify()[源代码]#
将系数矩阵转换为稀疏格式。
转换
coef_
scipy.sparse矩阵的成员,对于L1正规化模型,该矩阵比通常的numpy. ndray表示具有更高的内存和存储效率。的
intercept_
成员未转换。- 返回:
- 自我
拟合估计量。
注意到
对于非稀疏模型,即当零不多时
coef_
,这实际上可能 increase 内存使用情况,因此请谨慎使用此方法。经验法则是零元素的数量,可以用(coef_ == 0).sum()
,必须超过50%才能提供显着的好处。调用此方法后,使用partial_fit方法(如果有的话)的进一步匹配将无法工作,直到调用denssify。