GradientBoostingRegressor#
- class sklearn.ensemble.GradientBoostingRegressor(*, loss='squared_error', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)[源代码]#
梯度提升回归。
该估计器以向前阶段的方式构建一个加性模型;它允许优化任意可微损失函数。在每个阶段中,回归树都适合给定损失函数的负梯度。
HistGradientBoostingRegressor
对于中型和大型数据集,是该算法的更快变体 (n_samples >= 10_000
)并支持单调约束。阅读更多的 User Guide .
- 参数:
- loss'平方_error ','绝对_error ',' huber ',&# 默认='平方_错误'
损失函数有待优化。“平方误差”指的是回归的平方误差。“绝对错误”指的是回归的绝对误差,是一个稳健的损失函数。“huber”是两者的结合。“分位数”允许分位数回归(使用
alpha
指定分位数)。看到 梯度Boosting回归的预测区间 例如,演示用于创建预测区间的分位数回归loss='quantile'
.- learning_ratefloat,默认=0.1
学习率将每棵树的贡献缩小
learning_rate
. learning_rate和n_estimators之间存在权衡。值必须在范围内[0.0, inf)
.- n_estimatorsint,默认=100
要执行的助推阶段的数量。梯度提升对于过适应相当稳健,因此大量梯度通常会导致更好的性能。值必须在范围内
[1, inf)
.- subsamplefloat,默认=1.0
用于适应各个基本学习者的样本比例。如果小于1.0,则会导致随机梯度增强。
subsample
与参数交互n_estimators
.选择subsample < 1.0
导致方差的减少和偏差的增加。值必须在范围内(0.0, 1.0]
.- criterion' friedman_mse ','平方_error '},默认='弗里德曼_mse '
衡量拆分质量的功能。支持的标准是“friedman_mse”代表均方误差,弗里德曼改进评分为“squared_oss”代表均方误差。“friedman_mse”的默认值通常是最好的,因为它在某些情况下可以提供更好的逼近。
Added in version 0.18.
- min_samples_splitint或float,默认=2
拆分内部节点所需的最小样本数:
如果为int,则值必须在范围内
[2, inf)
.如果是浮动的,则值必须在范围内
(0.0, 1.0]
和min_samples_split
将ceil(min_samples_split * n_samples)
.
在 0.18 版本发生变更: 为分数添加了浮动值。
- min_samples_leafint或float,默认=1
叶节点处所需的最小样本数量。任何深度的分裂点只有在至少离开时才会被考虑
min_samples_leaf
左分支和右分支中的训练样本。 这可能会平滑模型,特别是在回归中。如果为int,则值必须在范围内
[1, inf)
.如果是浮动的,则值必须在范围内
(0.0, 1.0)
和min_samples_leaf
将ceil(min_samples_leaf * n_samples)
.
在 0.18 版本发生变更: 为分数添加了浮动值。
- min_weight_fraction_leaffloat,默认=0.0
叶节点所需的(所有输入样本的)权重总和的最小加权分数。当未提供sample_weight时,样本的重量相同。值必须在范围内
[0.0, 0.5]
.- max_depthint或无,默认=3
单个回归估计量的最大深度。最大深度限制树中的节点数量。调整此参数以获得最佳性能;最佳值取决于输入变量的相互作用。如果无,则扩展节点,直到所有叶都是纯的,或者直到所有叶包含的样本少于min_samples_split。如果为int,则值必须在范围内
[1, inf)
.- min_impurity_decreasefloat,默认=0.0
如果这种分裂导致杂质减少大于或等于该值,则节点将被分裂。值必须在范围内
[0.0, inf)
.加权杂质减少方程如下:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
哪里
N
是样本总数,N_t
是当前节点处的样本数,N_t_L
是左侧子项中的样本数,并且N_t_R
是正确子项中的样本数。N
,N_t
,N_t_R
和N_t_L
如果sample_weight
已通过。Added in version 0.19.
- init估计器或“零”,默认=无
用于计算初始预测的估计器对象。
init
必须提供 fit 和 predict .如果“零”,则初始原始预测设置为零。默认情况下,DummyEstimator
用于预测平均目标值(对于loss =' squared_error ')或其他损失的分位数。- random_stateint,RandomState实例或无,默认=无
控制在每次增强迭代时给予每个树估计器的随机种子。此外,它还控制每次拆分时特征的随机排列(更多详细信息,请参阅注释)。它还控制训练数据的随机拆分,以获得验证集,如果
n_iter_no_change
不是没有。传递int以获得跨多个函数调用的可重复输出。看到 Glossary .- max_features' SQRT ',',int或float,默认=无
寻找最佳拆分时需要考虑的功能数量:
如果为int,则值必须在范围内
[1, inf)
.如果是浮动的,则值必须在范围内
(0.0, 1.0]
每次拆分时考虑的特征将是max(1, int(max_features * n_features_in_))
.如果是“SQRT”,那么
max_features=sqrt(n_features)
.如果“log 2”,那么
max_features=log2(n_features)
.If None, then
max_features=n_features
.
选择
max_features < n_features
导致方差的减少和偏差的增加。注意:直到找到节点样本的至少一个有效分区,拆分的搜索才会停止,即使它需要有效检查超过
max_features
功能.- alpha浮点数,默认值=0.9
胡伯损失函数的阿尔法分位数和分位数损失函数。仅当
loss='huber'
或loss='quantile'
.值必须在范围内(0.0, 1.0)
.- verboseint,默认=0
启用详细输出。如果为1,那么它会偶尔打印进度和性能(树越多,频率越低)。如果大于1,则会打印每棵树的进度和性能。值必须在范围内
[0, inf)
.- max_leaf_nodesint,默认=无
种植树木
max_leaf_nodes
以最好的方式。最佳节点定义为杂质的相对减少。值必须在范围内[2, inf)
.如果无,则叶节点数量无限。- warm_start布尔,默认=假
如果设置为
True
,重复使用上一个调用的解决方案来适应并向集合添加更多估计量,否则,只需擦除上一个解决方案。看到 the Glossary .- validation_fractionfloat,默认=0.1
预留作为提前停止验证的训练数据比例。值必须在范围内
(0.0, 1.0)
.仅在以下情况下使用n_iter_no_change
被设置为一个整数。Added in version 0.20.
- n_iter_no_changeint,默认=无
n_iter_no_change
用于决定在验证分数没有改善时是否使用提前停止来终止训练。默认情况下,将其设置为无以禁用提前停止。如果设置为数字,就会拨出validation_fraction
训练数据的大小作为验证,并在验证分数在所有之前的验证分数没有改善时终止训练n_iter_no_change
迭代次数。值必须在范围内[1, inf)
.看到 Gradient Boosting中的提前停止 .Added in version 0.20.
- tolfloat,默认= 1 e-4
容忍提前停止。当损失至少没有改善时
n_iter_no_change
迭代(如果设置为数字),则训练停止。值必须在范围内[0.0, inf)
.Added in version 0.20.
- ccp_alpha非负浮点数,默认值=0.0
复杂度参数用于最小成本-复杂度修剪。成本复杂性最大的子树小于
ccp_alpha
将被选中。默认情况下,不执行修剪。值必须在范围内[0.0, inf)
.看到 最小成本复杂性修剪 有关详细信息看到 具有成本复杂性修剪的后修剪决策树 作为这种修剪的一个例子。Added in version 0.22.
- 属性:
- n_estimators_int
提前停止选择的估计量数量(如果
n_iter_no_change
已指定)。否则设置为n_estimators
.- n_trees_per_iteration_int
每次迭代时构建的树的数量。对于回归变量,它始终为1。
Added in version 1.4.0.
feature_importances_
形状的nd数组(n_features,)基于杂质的特征很重要。
- oob_improvement_形状的nd数组(n_estimators,)
相对于上一次迭代,袋外样本的损失有所改善。
oob_improvement_[0]
是第一级损失的改善,init
估计者。仅在以下情况下可用subsample < 1.0
.- oob_scores_形状的nd数组(n_estimators,)
袋外样本损失值的完整历史记录。仅在以下情况下可用
subsample < 1.0
.Added in version 1.3.
- oob_score_浮子
袋外样本损失的最后值。则等效于
oob_scores_[-1]
.仅在以下情况下可用subsample < 1.0
.Added in version 1.3.
- train_score_形状的nd数组(n_estimators,)
第i个分数
train_score_[i]
是模型在迭代时的损失i
在袋内样本上。如果subsample == 1
这是训练数据的损失。- init_估计器
提供初始预测的估计器。通过设置
init
论点- estimators_DecisionTree形状回归量的nd数组(n_estimators,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.
- max_features_int
max_features的推断值。
参见
HistGradientBoostingRegressor
基于柱状图的梯度增强分类树。
sklearn.tree.DecisionTreeRegressor
决策树回归器。
sklearn.ensemble.RandomForestRegressor
随机森林回归量。
注意到
特征总是在每次拆分时随机排列。因此,即使使用相同的训练数据,
max_features=n_features
,如果在搜索最佳分裂期间列举的几个分裂的标准改进相同。为了在装配期间获得确定性行为,random_state
必须修复。引用
J. Friedman, Greedy Function Approximation: A Gradient Boosting Machine, The Annals of Statistics, Vol. 29, No. 5, 2001.
Friedman,Stochastic Gradient Boosting,1999
T.哈斯蒂河蒂布什拉尼和J·弗里德曼。统计学习要素第2版,Springer,2009年。
示例
>>> from sklearn.datasets import make_regression >>> from sklearn.ensemble import GradientBoostingRegressor >>> from sklearn.model_selection import train_test_split >>> X, y = make_regression(random_state=0) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> reg = GradientBoostingRegressor(random_state=0) >>> reg.fit(X_train, y_train) GradientBoostingRegressor(random_state=0) >>> reg.predict(X_test[1:2]) array([-61...]) >>> reg.score(X_test, y_test) 0.4...
有关利用的详细示例
GradientBoostingRegressor
要适应弱预测模型的集合,请参阅 梯度增强回归 .- apply(X)[源代码]#
将集合中的树应用于X,返回叶索引。
Added in version 0.17.
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它的d类型将转换为
dtype=np.float32
.如果提供了稀疏矩阵,则将其转换为稀疏矩阵csr_matrix
.
- 返回:
- X_leaves形状的类数组(n_samples,n_estimators)
对于X中的每个数据点x和集合中的每棵树,返回叶子x的索引最终在每个估计器中。
- fit(X, y, sample_weight=None, monitor=None)[源代码]#
适应梯度提升模型。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.- y形状类似阵列(n_samples,)
目标值(分类中的字符串或整数,回归中的实数)对于分类,标签必须与类相对应。
- sample_weight形状类似数组(n_samples,),默认=无
样本重量。如果无,则样本的加权相等。在每个节点中搜索拆分时,会创建净零或负权重的子节点的拆分将被忽略。在分类的情况下,如果拆分会导致任何单个类在任一子节点中携带负权重,则也会被忽略。
- monitor可调用,默认值=无
每次迭代后都会调用监视器,当前迭代、对估计器和局部变量的引用
_fit_stages
作为关键字参数callable(i, self, locals())
.如果可赎回资产返回True
则停止安装程序。该监视器可用于多种用途,例如计算持续估计、提前停止、模型内省和快照。
- 返回:
- self对象
拟合估计量。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- predict(X)[源代码]#
预测X的回归目标。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.
- 返回:
- y形状的nd数组(n_samples,)
预测值。
- 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(*, monitor: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') GradientBoostingRegressor [源代码]#
请求元数据传递给
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
.否则就没有效果了。- 参数:
- monitor字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
monitor
参数fit
.- sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
sample_weight
参数fit
.
- 返回:
- self对象
更新的对象。
- set_params(**params)[源代码]#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
).后者具有以下形式的参数<component>__<parameter>
以便可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计参数。
- 返回:
- self估计器实例
估计实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') GradientBoostingRegressor [源代码]#
请求元数据传递给
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对象
更新的对象。