HistGradientBoostingRegressor#
- class sklearn.ensemble.HistGradientBoostingRegressor(loss='squared_error', *, quantile=None, learning_rate=0.1, max_iter=100, max_leaf_nodes=31, max_depth=None, min_samples_leaf=20, l2_regularization=0.0, max_features=1.0, max_bins=255, categorical_features='from_dtype', monotonic_cst=None, interaction_cst=None, warm_start=False, early_stopping='auto', scoring='loss', validation_fraction=0.1, n_iter_no_change=10, tol=1e-07, verbose=0, random_state=None)[源代码]#
基于柱状图的梯度增强回归树。
这个估计器比
GradientBoostingRegressor
对于大数据集(n_samples>= 10 000)。该估计器对缺失值(NaN)具有原生支持。在训练过程中,树木种植者根据潜在的收益,在每个分裂点学习缺失值的样本是否应该流向左孩子还是右孩子。预测时,具有缺失值的样本将被分配给左或右子。如果在训练期间没有遇到给定特征的缺失值,则具有缺失值的样本将映射到具有最多样本的孩子。看到 梯度增强树的梯度中的功能 此功能的用例示例。
此实现的灵感来自 LightGBM .
阅读更多的 User Guide .
Added in version 0.21.
- 参数:
- loss'平方_错误','绝对_错误',' poisson ',' 默认='平方_错误'
在助推过程中使用的损失函数。请注意,“平方误差”、“伽玛”和“poisson”损失实际上实现了“半最小平方损失”、“半伽玛偏差”和“半Poisson偏差”,以简化梯度的计算。此外,“gamma”和“poisson”损失在内部使用日志链接,“gamma”需要
y > 0
而“泊松”需要y >= 0
.“分位数”使用弹球损失。在 0.23 版本发生变更: 添加了选项“poisson”。
在 1.1 版本发生变更: 添加了选项“分位数”。
在 1.3 版本发生变更: 添加了选项“gamma”。
- quantilefloat,默认=无
如果损失为“分位数”,则此参数指定要估计的分位数,并且必须介于0和1之间。
- learning_ratefloat,默认=0.1
学习率,也称为 shrinkage .这被用作叶子值的乘数。使用
1
不会缩水。- max_iterint,默认=100
助推过程的最大迭代次数,即树的最大数量。
- max_leaf_nodesint或无,默认=31
每棵树的最大叶子数。必须严格大于1。如果无,则没有最大限制。
- max_depthint或无,默认=无
每棵树的最大深度。树的深度是从根部到最深叶子的边缘数量。默认情况下深度不受限制。
- min_samples_leafint,默认=20
每片叶子的最小样本数量。对于样本少于几百个的小型数据集,建议降低该值,因为只会构建非常浅的树。
- l2_regularizationfloat,默认=0
L2正规化参数惩罚带有小粗麻布的叶子。使用
0
不进行正规化(默认)。- max_featuresfloat,默认=1.0
每个节点分裂中随机选择的特征的比例。这是一种形式的正规化,较小的值会使树的学习能力较弱,并且可能会防止过度匹配。如果交互限制来自
interaction_cst
存在时,仅考虑允许的特征来进行二次抽样。Added in version 1.4.
- max_binsint,默认=255
用于非缺失值的最大bin数。在训练之前,输入数组的每个特征
X
被分组到整值箱中,这使得训练阶段更快。具有少量唯一值的功能可能会使用少于max_bins
垃圾箱。除了有max_bins
箱,总是为缺失的值保留一个箱。必须不大于255。- categorical_features形状(n_features)的{bool,int,stra}的类数组 或形状(n_category_features,),默认=无
指示类别特征。
无:没有任何功能被视为绝对的。
布尔数组类:指示类别特征的布尔屏蔽。
类integer数组:指示类别特征的integer索引。
类字符串数组:分类特征的名称(假设训练数据具有特征名称)。
"from_dtype"
:具有d类型“类别”的收件箱列被认为是分类功能。输入必须是暴露__dataframe__
使用此功能的方法,例如pandas或polars DataFrame。
对于每个分类特征,最多必须有
max_bins
独特的类别。编码为数字数据类型的分类特征的负值将被视为缺失值。所有类别值都转换为浮点数。这意味着类别值1.0和1被视为同一类别。阅读更多的 User Guide .
Added in version 0.24.
在 1.2 版本发生变更: 添加了对功能名称的支持。
在 1.4 版本发生变更: 添加
"from_dtype"
选项.在 1.6 版本发生变更: 默认值从
None
到"from_dtype"
.- monotonic_cst形状(n_features)或dict的int的类数组,默认=无
使用以下整值指定对每个要素强制执行的单调约束:
1:单调增加
0:无约束
-1:单调减少
如果dict具有字符串键,请通过名称将要素映射到单调约束。如果是数组,则要素将按位置映射到约束。看到 使用要素名称指定单调约束 查看使用示例。
阅读更多的 User Guide .
Added in version 0.23.
在 1.2 版本发生变更: 接受以特征名称作为关键字的约束规则。
- interaction_cst{“pairwise”,“no_interactions”}或列表/元组/集合的序列 int,默认值为None
指定交互约束,即可以在子节点拆分中相互交互的特征集。
每个项指定允许相互交互的特征索引集。如果特征比这些约束中指定的多,则会将其视为已指定为附加集。
字符串“pairwise”和“no_interactions”分别是仅允许成对或不允许交互的缩写。
例如,共有5个功能,
interaction_cst=[{0, 1}]
相当于interaction_cst=[{0, 1}, {2, 3, 4}]
,并指定树的每个分支要么仅在要素0和1上分裂,要么仅在要素2、3和4上分裂。Added in version 1.2.
- warm_start布尔,默认=假
如果设置为
True
,重复使用上一次调用的解决方案来适应并向集合添加更多估计量。为了使结果有效,应仅在相同的数据上重新训练估计器。看到 the Glossary .- early_stopping“Auto”或布尔,默认=“Auto”
如果是“自动”,则如果样本量大于10000,则启用提前停止。如果为True,则启用提前停止,否则禁用提前停止。
Added in version 0.23.
- scoring字符串或可调用或无,默认=' loss '
用于提前停止的评分参数。它可以是单个字符串(请参阅 的 scoring 参数:定义模型评估规则 )或可赎回债券(见 可召唤得分手 ).如果无,则使用估计器的默认评分器。如果
scoring='loss'
,根据损失值检查提前停止。仅在提前停止时使用。- validation_fractionint或float或无,默认=0.1
预留作为提前停止验证数据的训练数据比例(或绝对大小)。如果无,则对训练数据进行提前停止。仅在提前停止时使用。
- n_iter_no_changeint,默认值=10
用于确定何时“提前停止”。当最后一次没有时,安装过程将停止
n_iter_no_change
分数比n_iter_no_change - 1
- 倒数第一个,但有一定的容忍度。仅在提前停止时使用。- tolfloat,默认= 1 e-7
提前停止期间比较分数时使用的绝对容忍度。容忍度越高,我们提前停止的可能性就越大:容忍度越高意味着后续迭代将更难被视为对参考分数的改进。
- verboseint,默认=0
冗长程度。如果不为零,请打印有关安装过程的一些信息。
1
仅打印摘要信息,2
每次迭代打印信息。- random_stateint,RandomState实例或无,默认=无
伪随机数生成器,用于控制分类过程中的子采样,以及在启用提前停止时对训练/验证数据进行拆分。传递int以获得跨多个函数调用的可重复输出。看到 Glossary .
- 属性:
- do_early_stopping_bool
指示训练期间是否使用提前停止。
n_iter_
int提升过程的迭代次数。
- n_trees_per_iteration_int
每次迭代时构建的树的数量。对于回归变量,它始终为1。
- train_score_nd数组,形状(n_iter_+1,)
训练数据每次迭代时的分数。第一个条目是第一次迭代之前合奏的乐谱。分数根据
scoring
参数.如果scoring
不是“损失”,则在最多10000个样本的子集上计算分数。如果不提前停车,空的。- validation_score_nd数组,形状(n_iter_+1,)
所持有的验证数据的每次迭代的分数。第一个条目是第一次迭代之前合奏的乐谱。分数根据
scoring
参数.如果没有提前停止或validation_fraction
没有。- is_categorical_ndray、shape(n_features,)或无
类别特征的布尔屏蔽。
None
如果没有分类特征的话- 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.
参见
GradientBoostingRegressor
精确的梯度增强方法,在具有大量样本的数据集上扩展性较差。
sklearn.tree.DecisionTreeRegressor
决策树回归器。
RandomForestRegressor
一种元估计器,将多个决策树回归量与数据集的各个子样本进行匹配,并使用平均值来提高统计性能并控制过度匹配。
AdaBoostRegressor
元估计器,首先在原始数据集上匹配回归量,然后在同一数据集上匹配回归量的额外副本,但实例的权重根据当前预测的误差进行调整。因此,随后的回归者更多地关注困难的案例。
示例
>>> from sklearn.ensemble import HistGradientBoostingRegressor >>> from sklearn.datasets import load_diabetes >>> X, y = load_diabetes(return_X_y=True) >>> est = HistGradientBoostingRegressor().fit(X, y) >>> est.score(X, y) 0.92...
- fit(X, y, sample_weight=None)[源代码]#
适应梯度提升模型。
- 参数:
- X形状类似阵列(n_samples,n_features)
输入样本。
- y形状类似阵列(n_samples,)
目标值。
- sample_weightarray-like of shape(n_samples,)default=None
训练数据的权重。
Added in version 0.23.
- 返回:
- self对象
拟合估计量。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- 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(*, sample_weight: bool | None | str = '$UNCHANGED$') HistGradientBoostingRegressor [源代码]#
请求元数据传递给
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
.否则就没有效果了。- 参数:
- 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$') HistGradientBoostingRegressor [源代码]#
请求元数据传递给
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对象
更新的对象。