HistGradientBoostingClassifier#

class sklearn.ensemble.HistGradientBoostingClassifier(loss='log_loss', *, 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, class_weight=None)[源代码]#

基于柱状图的梯度增强分类树。

这个估计器比 GradientBoostingClassifier 对于大数据集(n_samples>= 10 000)。

该估计器对缺失值(NaN)具有原生支持。在训练过程中,树木种植者根据潜在的收益,在每个分裂点学习缺失值的样本是否应该流向左孩子还是右孩子。预测时,具有缺失值的样本将被分配给左或右子。如果在训练期间没有遇到给定特征的缺失值,则具有缺失值的样本将映射到具有最多样本的孩子。

此实现的灵感来自 LightGBM .

阅读更多的 User Guide .

Added in version 0.21.

参数:
loss默认值为“log_loss”

在助推过程中使用的损失函数。

对于二元分类问题,“log_loss”也被称为逻辑损失、二项偏差或二进制互变。在内部,该模型每次助推迭代适合一棵树,并使用逻辑sigmoid函数(expit)作为反向链接函数来计算预测的正类概率。

对于多类分类问题,“log_loss”也被称为多项偏差或类别互变性。在内部,该模型在每个增强迭代和每个类中适合一棵树,并使用softmax函数作为反向链接函数来计算类的预测概率。

learning_ratefloat,默认=0.1

学习率,也称为 shrinkage .这被用作叶子值的乘数。使用 1 不会缩水。

max_iterint,默认=100

助推过程的最大迭代次数,即二元分类的最大树数量。对于多类分类, n_classes 每次迭代都会构建树。

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" 选项.

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 .

class_weightdict或“balanced”,默认=无

与形式中的类关联的权重 {class_label: weight} .如果没有给出,所有类别的权重都应该为一。“平衡”模式使用y值自动调整与输入数据中的类别频率成反比例的权重, n_samples / (n_classes * np.bincount(y)) .请注意,如果出现以下情况,这些权重将乘以sample_weight(通过fit方法传递) sample_weight 指定了

Added in version 1.2.

属性:
classes_数组,shape =(n_classes,)

班级标签。

do_early_stopping_bool

指示训练期间是否使用提前停止。

n_iter_int

提升过程的迭代次数。

n_trees_per_iteration_int

每次迭代时构建的树的数量。对于二进制分类,这等于1,而对于二进制分类,这等于1 n_classes 用于多类分类。

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.

参见

GradientBoostingClassifier

精确的梯度增强方法,在具有大量样本的数据集上扩展性较差。

sklearn.tree.DecisionTreeClassifier

决策树分类器。

RandomForestClassifier

一种元估计器,它将许多决策树分类器拟合到数据集的各个子样本上,并使用平均值来提高预测精度和控制过度拟合。

AdaBoostClassifier

元估计器首先在原始数据集上匹配分类器,然后在同一数据集上匹配分类器的额外副本,其中错误分类的实例的权重会被调整,以便后续分类器更多地关注困难的情况。

示例

>>> from sklearn.ensemble import HistGradientBoostingClassifier
>>> from sklearn.datasets import load_iris
>>> X, y = load_iris(return_X_y=True)
>>> clf = HistGradientBoostingClassifier().fit(X, y)
>>> clf.score(X, y)
1.0
decision_function(X)[源代码]#

计算的决策函数 X .

参数:
X类数组,形状(n_samples,n_features)

输入样本。

返回:
decisionnd数组、形状(n_samples,)或 (n_samples,n_tree_per_iteration)

每个样本的原始预测值(即树叶的总和)。n_tree_per_iteration等于多类分类中的类数量。

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

参数名称映射到其值。

predict(X)[源代码]#

预测X的班级。

参数:
X类数组,形状(n_samples,n_features)

输入样本。

返回:
ynd数组,形状(n_samples,)

预测的班级。

predict_proba(X)[源代码]#

预测X的类概率。

参数:
X类数组,形状(n_samples,n_features)

输入样本。

返回:
pnd数组,形状(n_samples,n_classes)

输入样本的类概率。

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(*, sample_weight: bool | None | str = '$UNCHANGED$') HistGradientBoostingClassifier[源代码]#

请求元数据传递给 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$') HistGradientBoostingClassifier[源代码]#

请求元数据传递给 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)

输入样本。

收益率:
decision形状nd数组的生成器(n_samples,)或 (n_samples,n_tree_per_iteration)

输入样本的决策函数,其对应于从集合的树预测的原始值。类与属性中的类相对应 classes_ .

staged_predict(X)[源代码]#

预测每次迭代时的类。

该方法允许在每个阶段后进行监控(即确定测试集上的错误)。

Added in version 0.24.

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

收益率:
y形状nd数组的生成器(n_samples,)

The predicted classes of the input samples, for each iteration.

staged_predict_proba(X)[源代码]#

预测每次迭代时的类概率。

该方法允许在每个阶段后进行监控(即确定测试集上的错误)。

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

收益率:
y形状nd数组的生成器(n_samples,)

每次迭代的输入样本的预测类概率。