ExtraTreeRegressor#
- class sklearn.tree.ExtraTreeRegressor(*, criterion='squared_error', splitter='random', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, random_state=None, min_impurity_decrease=0.0, max_leaf_nodes=None, ccp_alpha=0.0, monotonic_cst=None)#
一个极度随机的树回归器。
Extra-trees与经典决策树在构建方式上有所不同。在寻找最佳分割以将节点的样本分成两组时,会为每个随机选择的
max_features
特征绘制随机分割,并从这些分割中选择最佳分割。当max_features
设置为1时,这相当于构建一个完全随机的决策树。警告:Extra-trees应仅在集成方法中使用。
更多信息请参阅 用户指南 。
- Parameters:
- criterion{“squared_error”, “friedman_mse”, “absolute_error”, “poisson”}, 默认=”squared_error”
用于衡量分割质量的函数。支持的标准是“squared_error”用于均方误差,这等同于以特征选择标准减少方差并使用每个终端节点的均值最小化L2损失,“friedman_mse”使用Friedman的潜在分割改进分数的均方误差,“absolute_error”用于均绝对误差,这使用每个终端节点的中值最小化L1损失,以及“poisson”使用泊松偏差的减少来寻找分割。
Added in version 0.18: 均绝对误差(MAE)标准。
Added in version 0.24: 泊松偏差标准。
- splitter{“random”, “best”}, 默认=”random”
用于在每个节点选择分割的策略。支持的策略是“best”选择最佳分割和“random”选择最佳随机分割。
- max_depthint, 默认=None
树的最大深度。如果为None,则节点会一直扩展直到所有叶子都是纯的或直到所有叶子包含少于min_samples_split个样本。
- min_samples_splitint 或 float, 默认=2
分割内部节点所需的最小样本数:
如果为int,则将
min_samples_split
视为最小数量。如果为float,则
min_samples_split
是一个分数,并且ceil(min_samples_split * n_samples)
是每个分割的最小样本数。
Changed in version 0.18: 增加了分数的浮点值。
- min_samples_leafint 或 float, 默认=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, 默认=0.0
叶节点所需的最小加权分数。所有输入样本的总权重(当未提供sample_weight时,样本具有相等的权重)。
- max_featuresint, float, {“sqrt”, “log2”} 或 None, 默认=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,则
max_features=n_features
。
Changed in version 1.1:
max_features
的默认值从"auto"
改为1.0
。注意:寻找分割不会停止,直到至少找到一个有效的节点样本分区,即使这需要实际检查超过
max_features
个特征。- random_stateint, RandomState实例 或 None, 默认=None
用于在每个分割时随机选择
max_features
。详见 Glossary 。- min_impurity_decreasefloat, 默认=0.0
如果分割导致的 impurity 减少大于或等于此值,则节点将被分割。
加权 impurity 减少方程如下:
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.
- max_leaf_nodesint, 默认=None
以最佳优先方式生长具有
max_leaf_nodes
的树。最佳节点定义为相对减少 impurity。如果为None,则叶节点数量不受限制。- ccp_alpha非负浮点数, 默认=0.0
用于最小成本复杂度剪枝的复杂度参数。将选择成本复杂度最大且小于
ccp_alpha
的子树。默认情况下,不进行剪枝。详见 最小成本复杂度剪枝 。Added in version 0.22.
- monotonic_cst形状为(n_features)的int数组, 默认=None
- 指示要在每个特征上强制执行的单调性约束。
1: 单调增加
0: 无约束
-1: 单调减少
如果monotonic_cst为None,则不应用约束。
- 单调性约束不支持:
多输出回归(即当
n_outputs_ > 1
时),在数据包含缺失值时训练的回归。
更多信息请参阅 用户指南 。
Added in version 1.4.
- Attributes:
- max_features_int
max_features的推断值。
- n_features_in_int
在 fit 期间看到的特征数量。
Added in version 0.24.
- feature_names_in_形状为(
n_features_in_
,)的ndarray 在 fit 期间看到的特征名称。仅当
X
的特征名称均为字符串时定义。Added in version 1.0.
feature_importances_
形状为(n_features,)的ndarray返回特征重要性。
- n_outputs_int
执行
fit
时的输出数量。- tree_Tree实例
底层Tree对象。请参阅
help(sklearn.tree._tree.Tree)
了解Tree对象的属性,并参阅 理解决策树结构 了解这些属性的基本用法。
See also
ExtraTreeClassifier
一个极度随机的树分类器。
sklearn.ensemble.ExtraTreesClassifier
一个extra-trees分类器。
sklearn.ensemble.ExtraTreesRegressor
一个extra-trees回归器。
Notes
控制树大小的参数的默认值(例如
max_depth
,min_samples_leaf
等)会导致完全生长且未修剪的树,这在某些数据集上可能会非常大。为了减少内存消耗,应通过设置这些参数值来控制树的复杂性和大小。References
[1]P. Geurts, D. Ernst., 和 L. Wehenkel, “Extremely randomized trees”, 机器学习, 63(1), 3-42, 2006.
Examples
>>> from sklearn.datasets import load_diabetes >>> from sklearn.model_selection import train_test_split >>> from sklearn.ensemble import BaggingRegressor >>> from sklearn.tree import ExtraTreeRegressor >>> X, y = load_diabetes(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> extra_tree = ExtraTreeRegressor(random_state=0) >>> reg = BaggingRegressor(extra_tree, random_state=0).fit( ... X_train, y_train) >>> reg.score(X_test, y_test) 0.33...
- apply(X, check_input=True)#
返回每个样本被预测为的叶子的索引。
Added in version 0.17.
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵,则转换为稀疏的csr_matrix
。- check_inputbool, 默认=True
允许绕过多个输入检查。 除非你知道自己在做什么,否则不要使用此参数。
- Returns:
- X_leavesarray-like,形状为 (n_samples,)
对于 X 中的每个数据点 x,返回 x 最终所在的叶子的索引。叶子编号在
[0; self.tree_.node_count)
范围内,编号可能会有间隙。
- cost_complexity_pruning_path(X, y, sample_weight=None)#
计算在最小成本复杂度剪枝过程中的剪枝路径。
有关剪枝过程的详细信息,请参见 最小成本复杂度剪枝 。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵,则转换为稀疏的csc_matrix
。- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
目标值(类标签)为整数或字符串。
- sample_weightarray-like of shape (n_samples,), default=None
样本权重。如果为 None,则样本等权重。在每个节点中搜索分割时,会忽略创建子节点净零或负权重的分割。如果分割会导致任一子节点中的任何单一类别负权重,也会忽略这些分割。
- Returns:
- ccp_path
Bunch
类似字典的对象,具有以下属性。
- ccp_alphasndarray
剪枝过程中子树的有效 alphas。
- impuritiesndarray
对应于
ccp_alphas
中的 alpha 值的子树叶子总杂质。
- ccp_path
- decision_path(X, check_input=True)#
返回树中的决策路径。
Added in version 0.18.
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵,则转换为稀疏csr_matrix
。- check_inputbool, 默认=True
允许绕过多个输入检查。 除非你知道自己在做什么,否则不要使用此参数。
- Returns:
- indicator形状为 (n_samples, n_nodes) 的稀疏矩阵
返回一个节点指示 CSR 矩阵,其中非零元素表示样本经过这些节点。
- property feature_importances_#
返回特征重要性。
特征的重要性计算为其带来的准则(归一化)总减少量。 这也被称为基尼重要性。
警告:基于不纯度的特征重要性对于高基数特征(许多唯一值)可能会产生误导。请参阅
sklearn.inspection.permutation_importance
作为替代方法。- Returns:
- feature_importances_ndarray of shape (n_features,)
特征带来的准则归一化总减少量(基尼重要性)。
- fit(X, y, sample_weight=None, check_input=True)#
构建一个从训练集(X,y)生成的决策树回归器。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
训练输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵, 则转换为稀疏的csc_matrix
。- yarray-like,形状为 (n_samples,) 或 (n_samples, n_outputs)
目标值(实数)。使用
dtype=np.float64
和order='C'
以获得最高效率。- sample_weightarray-like,形状为 (n_samples,),默认=None
样本权重。如果为 None,则样本等权重。在每个节点中搜索分割时, 会忽略那些会创建子节点且净权重为零或负的分割。
- check_inputbool,默认=True
允许绕过多个输入检查。 除非你知道自己在做什么,否则不要使用此参数。
- Returns:
- selfDecisionTreeRegressor
拟合的估计器。
- get_depth()#
返回决策树的深度。
树的深度是根节点与任何叶节点之间的最大距离。
- Returns:
- self.tree_.max_depthint
树的最大深度。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_n_leaves()#
返回决策树的叶子数量。
- Returns:
- self.tree_.n_leavesint
叶子数量。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X, check_input=True)#
预测X的类别或回归值。
对于分类模型,返回X中每个样本的预测类别。对于回归模型,返回基于X的预测值。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵,则转换为稀疏的csr_matrix
。- check_inputbool, default=True
允许绕过多个输入检查。 除非你知道自己在做什么,否则不要使用此参数。
- Returns:
- yarray-like of shape (n_samples,) or (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\) 相对于
y
的self.predict(X)
。
Notes
在调用回归器的
score
时使用的 \(R^2\) 得分从 0.23 版本开始使用multioutput='uniform_average'
以保持与r2_score
默认值一致。 这影响了所有多输出回归器的score
方法(除了MultiOutputRegressor
)。
- set_fit_request(*, check_input: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreeRegressor #
Request metadata passed to the
fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.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:
- check_inputstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
check_input
parameter infit
.- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weight
parameter infit
.
- Returns:
- selfobject
The updated object.
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_predict_request(*, check_input: bool | None | str = '$UNCHANGED$') ExtraTreeRegressor #
Request metadata passed to the
predict
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed topredict
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it topredict
.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:
- check_inputstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
check_input
parameter inpredict
.
- Returns:
- selfobject
The updated object.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreeRegressor #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.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 inscore
.
- Returns:
- selfobject
The updated object.