GradientBoostingClassifier#
- class sklearn.ensemble.GradientBoostingClassifier(*, loss='log_loss', 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, 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)[源代码]#
用于分类的梯度增强。
该算法以向前的逐阶段方式构建加性模型;它允许优化任意可微损失函数。各阶段
n_classes_
回归树适合损失函数的负梯度,例如二进制或多类log损失。二元分类是仅引发单个回归树的特殊情况。HistGradientBoostingClassifier
对于中型和大型数据集,是该算法的更快变体 (n_samples >= 10_000
)并支持单调约束。阅读更多的 User Guide .
- 参数:
- loss' log_loss ',',默认=' log_loss '
损失函数有待优化。“log_loss”指的是二项和多项偏差,与逻辑回归中使用的相同。对于具有概率输出的分类来说,这是一个不错的选择。对于“指数”损失,梯度提升将恢复AdaBoost算法。
- 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”代表均方误差(Friedman的改进分数),“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_proba .如果“零”,则初始原始预测设置为零。默认情况下DummyEstimator
预测使用的类别先验。- 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_))
.如果' squrt ',那么
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
功能.- verboseint,默认=0
启用详细输出。如果为1,那么它会偶尔打印进度和性能(树越多,频率越低)。如果大于1,则会打印每棵树的进度和性能。值必须在范围内
[0, inf)
.- max_leaf_nodesint,默认=无
种植树木
max_leaf_nodes
以最好的方式。最佳节点定义为杂质的相对减少。值必须在范围内[2, inf)
.如果None
,然后无限数量的叶节点。- 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
.Added in version 0.20.
- 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_ :nd数组DecisionTreeRegressor 形状(n_估计器,
n_trees_per_iteration_
)决策树的nd数组回归者 形状(n_估计器, 拟合子估计量的集合。
n_trees_per_iteration_
对于二进制分类来说是1,否则n_classes
.- classes_形状的nd数组(n_classes,)
班级标签。
- 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.
- n_classes_int
班级的数量。
- max_features_int
max_features的推断值。
参见
HistGradientBoostingClassifier
基于柱状图的梯度增强分类树。
sklearn.tree.DecisionTreeClassifier
决策树分类器。
RandomForestClassifier
一种元估计器,它将许多决策树分类器拟合到数据集的各个子样本上,并使用平均值来提高预测精度和控制过度拟合。
AdaBoostClassifier
元估计器首先在原始数据集上匹配分类器,然后在同一数据集上匹配分类器的额外副本,其中错误分类的实例的权重会被调整,以便后续分类器更多地关注困难的情况。
注意到
特征总是在每次拆分时随机排列。因此,即使使用相同的训练数据,
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年。
示例
下面的例子展示了如何将100个决策树作为弱学习器来拟合梯度提升分类器。
>>> from sklearn.datasets import make_hastie_10_2 >>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0) >>> X_train, X_test = X[:2000], X[2000:] >>> y_train, y_test = y[:2000], y[2000:]
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, ... max_depth=1, random_state=0).fit(X_train, y_train) >>> clf.score(X_test, y_test) 0.913...
- 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、n_classes)
对于X中的每个数据点x和集合中的每棵树,返回叶子x的索引最终在每个估计器中。在二元分类的情况下,n_classes是1。
- decision_function(X)[源代码]#
计算的决策函数
X
.- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.
- 返回:
- score形状的nd数组(n_samples,n_classes)或(n_samples,)
输入样本的决策函数,其对应于从集合的树预测的原始值。类的顺序与属性中的顺序相对应 classes_ .回归和二进制分类产生一个形状数组(n_samples,)。
- 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,)
预测值。
- predict_log_proba(X)[源代码]#
预测X的类对数概率。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.
- 返回:
- p形状的nd数组(n_samples,n_classes)
输入样本的类对数概率。类的顺序与属性中的顺序相对应 classes_ .
- 提出:
- AttributeError
如果
loss
不支持概率。
- predict_proba(X)[源代码]#
预测X的类概率。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.
- 返回:
- p形状的nd数组(n_samples,n_classes)
输入样本的类概率。类的顺序与属性中的顺序相对应 classes_ .
- 提出:
- AttributeError
如果
loss
不支持概率。
- score(X, y, sample_weight=None)[源代码]#
返回给定测试数据和标签的平均准确度。
在多标签分类中,这是子集准确度,这是一个苛刻的指标,因为您需要为每个样本正确预测每个标签集。
- 参数:
- X形状类似阵列(n_samples,n_features)
测试样本。
- y形状的类似阵列(n_samples,)或(n_samples,n_outputs)
真正的标签
X
.- sample_weight形状类似数组(n_samples,),默认=无
样本重量。
- 返回:
- score浮子
平均准确度
self.predict(X)
w.r.t.y
.
- set_fit_request(*, monitor: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') GradientBoostingClassifier [源代码]#
请求元数据传递给
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$') GradientBoostingClassifier [源代码]#
请求元数据传递给
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对象
更新的对象。
- staged_decision_function(X)[源代码]#
计算的决策函数
X
对于每次迭代。该方法允许在每个阶段后进行监控(即确定测试集上的错误)。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
输入样本。在内部,它将被转换为
dtype=np.float32
并且如果将稀疏矩阵提供给稀疏矩阵csr_matrix
.
- 收益率:
- score形状nd数组的生成器(n_samples,k)
输入样本的决策函数,其对应于从集合的树预测的原始值。类与属性中的类相对应 classes_ .回归和二元分类是特殊情况
k == 1
否则k==n_classes
.