ExtraTreesRegressor#

class sklearn.ensemble.ExtraTreesRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=False, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None, monotonic_cst=None)#

一个极端随机树回归器。

这个类实现了一个元估计器,它在一系列子样本上拟合多个随机决策树(又名极端随机树),并使用平均法来提高预测精度和控制过拟合。

更多信息请参阅 用户指南

Parameters:
n_estimatorsint, default=100

森林中树的数量。

Changed in version 0.22: 在0.22版本中, n_estimators 的默认值从10改为100。

criterion{“squared_error”, “absolute_error”, “friedman_mse”, “poisson”}, default=”squared_error”

衡量分割质量的函数。支持的标准是“squared_error”用于均方误差,等同于作为特征选择标准的方差减少,并使用每个终端节点的均值最小化L2损失,“friedman_mse”使用Friedman的改进分数的均方误差进行潜在分割,“absolute_error”用于均绝对误差,使用每个终端节点的中值最小化L1损失,以及“poisson”用于使用泊松偏差减少来寻找分割。使用“absolute_error”进行训练明显比使用“squared_error”慢。

Added in version 0.18: 均绝对误差(MAE)标准。

max_depthint, default=None

树的最大深度。如果为None,则节点会一直扩展,直到所有叶子都是纯的,或者所有叶子包含的样本数少于min_samples_split。

min_samples_splitint or float, default=2

分割内部节点所需的最小样本数:

  • 如果是int,则将 min_samples_split 视为最小数量。

  • 如果是float,则 min_samples_split 是一个分数, ceil(min_samples_split * n_samples) 是每个分割的最小样本数。

Changed in version 0.18: 增加了分数值。

min_samples_leafint or float, default=1

叶节点所需的最小样本数。在任何深度的分割点只有在每个左分支和右分支中留下至少 min_samples_leaf 训练样本时才会被考虑。这可能会对模型产生平滑效果,特别是在回归中。

  • 如果是int,则将 min_samples_leaf 视为最小数量。

  • 如果是float,则 min_samples_leaf 是一个分数, ceil(min_samples_leaf * n_samples) 是每个节点的最小样本数。

Changed in version 0.18: 增加了分数值。

min_weight_fraction_leaffloat, default=0.0

叶节点所需的最小加权分数。所有输入样本的总权重(如果未提供sample_weight)时,样本具有相等的权重。

max_features{“sqrt”, “log2”, None}, int or float, default=1.0

寻找最佳分割时考虑的特征数量:

  • 如果是int,则在每次分割时考虑 max_features 个特征。

  • 如果是float,则 max_features 是一个分数, max(1, int(max_features * n_features_in_)) 个特征在每次分割时被考虑。

  • 如果是“sqrt”,则 max_features=sqrt(n_features)

  • 如果是“log2”,则 max_features=log2(n_features)

  • 如果是None或1.0,则 max_features=n_features

Note

1.0的默认值等同于装袋树,可以通过设置较小的值(例如0.3)来实现更多的随机性。

Changed in version 1.1: max_features 的默认值从 "auto" 改为1.0。

注意:搜索分割不会停止,直到至少找到一个有效的节点样本分区,即使需要有效地检查超过 max_features 个特征。

max_leaf_nodesint, default=None

以最佳优先方式生长具有 max_leaf_nodes 的树。最佳节点定义为相对杂质减少。如果为None,则叶节点的数量不受限制。

min_impurity_decreasefloat, default=0.0

如果分割导致的杂质减少大于或等于此值,则节点将被分割。

加权杂质减少方程如下:

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 是右子节点的样本数。

NN_tN_t_RN_t_L 都指的是加权和,如果传递了 sample_weight

Added in version 0.19.

bootstrapbool, default=False

构建树时是否使用bootstrap样本。如果为False,则使用整个数据集构建每棵树。

oob_scorebool or callable, default=False

是否使用袋外样本来估计泛化分数。默认使用:func:~sklearn.metrics.r2_score 。提供具有签名 metric(y_true, y_pred) 的可调用对象以使用自定义度量。仅在 bootstrap=True 时可用。

n_jobsint, default=None

并行运行的作业数量。fitpredictdecision_path 和:meth:apply 都在树之间并行化。 None 意味着1,除非在:obj:joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。有关更多详细信息,请参阅:term:Glossary <n_jobs>

random_stateint, RandomState instance or None, default=None

控制三种随机性来源:

  • 构建树时使用的样本的bootstrap(如果 bootstrap=True

  • 在每个节点寻找最佳分割时考虑的特征采样(如果 max_features < n_features

  • 每个 max_features 的分割抽取

有关详细信息,请参阅:term:Glossary <random_state>

verboseint, default=0

拟合和预测时的详细程度。

warm_startbool, default=False

设置为 True 时,重用上一次调用fit的解决方案,并向集成中添加更多估计器,否则,拟合全新的森林。有关详细信息,请参阅:term:Glossary <warm_start> 和:ref:tree_ensemble_warm_start

ccp_alphanon-negative float, default=0.0

用于最小成本复杂度剪枝的复杂度参数。将选择成本复杂度小于 ccp_alpha 的最大子树。默认情况下,不进行剪枝。有关详细信息,请参阅:ref:minimal_cost_complexity_pruning

Added in version 0.22.

max_samplesint or float, default=None

如果bootstrap为True,从X中抽取的样本数量以训练每个基础估计器。

  • 如果为None(默认),则抽取 X.shape[0] 个样本。

  • 如果是int,则抽取 max_samples 个样本。

  • 如果是float,则抽取 max_samples * X.shape[0] 个样本。因此, max_samples 应在区间 (0.0, 1.0] 内。

Added in version 0.22.

monotonic_cstarray-like of int of shape (n_features), default=None
指示在每个特征上强制执行的单调性约束。
  • 1: 单调递增

  • 0: 无约束

  • -1: 单调递减

如果monotonic_cst为None,则不应用约束。

单调性约束不支持:
  • 多输出回归(即当 n_outputs_ > 1 时),

  • 在数据包含缺失值时训练的回归。

更多信息请参阅:ref:用户指南 <monotonic_cst_gbdt>

Added in version 1.4.

Attributes:
estimator_ExtraTreeRegressor

用于创建已拟合子估计器集合的子估计器模板。

Added in version 1.2: base_estimator_ 被重命名为 estimator_

estimators_list of DecisionTreeRegressor

已拟合子估计器的集合。

feature_importances_ndarray of shape (n_features,)

杂质特征重要性。

n_features_in_int

在:term:fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

在:term:fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

n_outputs_int

输出数量。

oob_score_float

使用袋外估计获得的训练数据集的分数。仅当 oob_score 为True时存在此属性。

oob_prediction_ndarray of shape (n_samples,) or (n_samples, n_outputs)

在训练集上使用袋外估计计算的预测。仅当 oob_score 为True时存在此属性。

estimators_samples_list of arrays

子集,每个基估计器绘制的样本。

See also

ExtraTreesClassifier

具有随机分割的极端随机树分类器。

RandomForestClassifier

具有最佳分割的随机森林分类器。

RandomForestRegressor

使用具有最佳分割的树的集成回归器。

Notes

控制树大小的参数的默认值(例如 max_depthmin_samples_leaf 等)会导致完全生长且未修剪的树,这些树在某些数据集上可能会非常大。为了减少内存消耗,应通过设置这些参数值来控制树的复杂性和大小。

References

[1]

P. Geurts, D. Ernst., and L. Wehenkel, “Extremely randomized trees”, Machine Learning, 63(1), 3-42, 2006.

Examples

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.ensemble import ExtraTreesRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=0)
>>> reg = ExtraTreesRegressor(n_estimators=100, random_state=0).fit(
...    X_train, y_train)
>>> reg.score(X_test, y_test)
0.2727...
apply(X)#

将森林中的树应用于X,返回叶子索引。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入样本。内部,其dtype将被转换为 dtype=np.float32 。如果提供稀疏矩阵,它将被转换为稀疏的 csr_matrix

Returns:
X_leavesndarray,形状为 (n_samples, n_estimators)

对于X中的每个数据点x和森林中的每棵树,返回x最终所在的叶子索引。

decision_path(X)#

返回森林中的决策路径。

Added in version 0.18.

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入样本。内部会将其 dtype 转换为 dtype=np.float32 。如果提供的是稀疏矩阵,它将被转换为稀疏的 csr_matrix

Returns:
indicator形状为 (n_samples, n_nodes) 的稀疏矩阵

返回一个节点指示矩阵,其中非零元素表示样本经过这些节点。矩阵为 CSR 格式。

n_nodes_ptr形状为 (n_estimators + 1,) 的 ndarray

indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] 的列给出了第 i 个估计器的指示值。

property estimators_samples_#

子集,每个基估计器绘制的样本。

返回一个动态生成的索引列表,标识用于拟合集成中每个成员的样本,即,袋内样本。

注意:为了不存储采样数据,从而减少对象的内存占用,每次调用该属性时都会重新创建列表。因此,获取该属性可能比预期的要慢。

property feature_importances_#

杂质特征重要性。

数值越高,特征越重要。 特征的重要性计算为其带来的准则总减少量的(归一化)值。它也被称为基尼重要性。

警告:基于杂质的特征重要性对于高基数特征(许多唯一值)可能会产生误导。请参阅 sklearn.inspection.permutation_importance 作为替代方法。

Returns:
feature_importances_ndarray of shape (n_features,)

该数组的值总和为1,除非所有树都是单节点树,仅由根节点组成,在这种情况下,它将是一个零数组。

fit(X, y, sample_weight=None)#

构建一个从训练集(X, y)中生成的树的森林。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

训练输入样本。内部,其 dtype 将被转换为 dtype=np.float32 。如果提供稀疏矩阵,它将被转换为稀疏的 csc_matrix

yarray-like,形状为 (n_samples,) 或 (n_samples, n_outputs)

目标值(在分类中为类标签,在回归中为实数)。

sample_weightarray-like,形状为 (n_samples,),默认=None

样本权重。如果为 None,则样本权重相等。在每个节点中搜索分割时,会忽略那些会创建子节点净零或负权重的分割。在分类的情况下,如果任何单个类在任一子节点中携带负权重,也会忽略这些分割。

Returns:
selfobject

拟合的估计器。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

预测X的回归目标。

输入样本的预测回归目标是森林中树木的平均预测回归目标。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入样本。内部将其dtype转换为 dtype=np.float32 。如果提供稀疏矩阵,则将其转换为稀疏的 csr_matrix

Returns:
yndarray,形状为 (n_samples,) 或 (n_samples, n_outputs)

预测值。

score(X, y, sample_weight=None)#

返回预测的决定系数。

决定系数 \(R^2\) 定义为 \((1 - rac{u}{v})\) ,其中 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum() ,而 \(v\) 是总平方和 ((y_true - y_true.mean()) ** 2).sum() 。最好的可能得分是 1.0,它可能是负的(因为模型可能任意地差)。一个总是预测 y 的期望值的常数模型,忽略输入特征,将得到 \(R^2\) 得分为 0.0。

Parameters:
Xarray-like of shape (n_samples, n_features)

测试样本。对于某些估计器,这可能是一个预计算的核矩阵或一个形状为 (n_samples, n_samples_fitted) 的通用对象列表,其中 n_samples_fitted 是估计器拟合中使用的样本数量。

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

X 的真实值。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。

Returns:
scorefloat

\(R^2\) 相对于 yself.predict(X)

Notes

在调用回归器的 score 时使用的 \(R^2\) 得分从 0.23 版本开始使用 multioutput='uniform_average' 以保持与 r2_score 默认值一致。 这影响了所有多输出回归器的 score 方法(除了 MultiOutputRegressor )。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreesRegressor#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreesRegressor#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.