sklearn.tree.ExtraTreeRegressor

class sklearn.tree.ExtraTreeRegressor(*, criterion='mse', splitter='random', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', random_state=None, min_impurity_decrease=0.0, min_impurity_split=None, max_leaf_nodes=None, ccp_alpha=0.0)                    

[源码]

极端随机回归树

极端随机树与传统的决策树在构建方式上有所不同。当寻找将节点的样本分成两组的最佳分割时,将对随机选择的max_features中的每个特征进行随机分割,并选择其中的最佳分割。当 max_features设置为1时,这等于建立一个完全随机的决策树。

注意:极端随机数只能在集成方法中使用

用户指南中阅读更多内容

参数 说明
criterion {“mse”, “friedman_mse”, “mae”}, default=”mse”
该函数用来测量分割的质量
- mse:表示均方误差
- friedman_mse: 均方误差等于方差减少作为特征选择准则
- mae: 表示绝对误差

新版本0.18:平均绝对误差(MAE)标准
splitter {“random”, “best”}, default=”random”
用于在每个节点选择分割的策略
- best:最佳分割
- random:最佳随机分割
默认是random
max_depth int, default=None
树的最大深度
如果为None,则将节点展开,直到所有叶子都是纯净的,或者直到所有叶子都包含少于min_samples_split个样本
默认为None
min_samples_split int or float, default=2
分割一个内部节点所需的最小样本数
- int:如果是int,则考虑min_samples_split作为最小值
- float:如果是float,那么min_samples_split是一个分数,而ceil(min_samples_split * n_samples)是每个分割的最小样本数。
默认值为:2
在0.18版本中更改:增加了分数的浮点值。
min_samples_leaf int or float, default=1
一个叶节点上所需的最小样本数。只有当它在每个左右分支中都留下至少min_samples_leaf训练样本时,任何深度的分割点才会被考虑。这可能会产生平滑模型的效果,特别是在回归中。
int:如果是int,则考虑min_samples_leaf作为最小值
float:如果是float,那么min_samples_leaf是一个分数,而ceil(min_samples_leaf * n_samples)是每个节点的最小样本数
在0.18版本中更改:增加了分数的浮点值
min_weight_fraction_leaf float, default=0.0
在所有叶节点处(所有输入样本)的权重总和中的最小加权分数。如果未提供sample_weight,则样本的权重相等。
max_features int, float, {“auto”, “sqrt”, “log2”} or None, default=”auto”
寻找最佳分割时要考虑的特性数量
- int:如果是int,则考虑每个分割处的max_features特性
- float:如果是float,那么max_features是一个分数,并且int(max_features * n_features) features会在每次分割时被考虑
- auto:如果是auto,则max_features=n_features
- sqrt:如果是“sqrt”,则max_features=sqrt(n_features)
- log2:如果“log2”,则max_features=log2(n_features)
- None:如果None, then max_features=n_features
默认是auto
注意:在找到节点样本的至少一个有效分区之前,对分割的搜索不会停止,即使它需要有效地检查超过max_features的特性。
random_state int, RandomState instance, default=None
用于随机选择每次分割时使用的max_features。有关详细信息,请参见词汇表
min_impurity_decrease float, 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为右子节点的样本数。
如果sample_weight被传递,N、N_t、N_t_R和N_t_L都指向加权和。
新版本为0.19
min_impurity_split float, (default=0)
最小杂质分裂,如果节点的杂质高于阈值,则该节点将分裂,否则为叶。
注意:从版本0.19开始被弃用: min_impurity_split在0.19中被弃用,转而支持min_impurity_decrease。min_impurity_split的默认值在0.23中从1e-7更改为0,在0.25中将被删除。使用min_impurity_decrease代替。
max_leaf_nodes int, default=None
以最佳优先的方式生成具有max_leaf_nodes的树。最佳节点定义为杂质的相对减少。如果为None,则叶节点数不受限制。
ccp_alpha non-negative float, default=0.0
复杂度参数用于最小代价复杂度剪枝。具有最大成本复杂度的子树小于ccp_alpha所选择的子树。默认情况下,不执行修剪。有关详细信息,请参见最小化成本-复杂性修剪
属性 说明
max_features_ int
max_features的推断值
n_features_ int
执行fit时的特征数
feature_importances_ ndarray of shape (n_features,)
返回特性的重要性
n_outputs_ int
fit执行时的输出数量
tree_ Tree
基础的Tree对象。help(sklearn.tree._tree.Tree)有关树对象的属性, 请参阅, 有关这些属性的基本用法,请参阅 决策树的结构

另见

ExtraTreeClassifier

sklearn.ensemble.ExtraTreesClassifier

sklearn.ensemble.ExtraTreesRegressor

注释

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

参考文献:

P. Geurts, D. Ernst., and L. Wehenkel, “Extremely randomized trees”, Machine Learning, 63(1), 3-42, 2006.(D.恩斯特。和L. Wehenkel,“极随机化树”,机器学习,63(1),3- 42,2006。)

例子:

>>> 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]) 返回每个样本预测为的叶的索引
cost_complexity_pruning_path(X, y[, …]) 在最小代价复杂度剪枝过程中计算剪枝路径
decision_path(X[, check_input]) 返回树中的决策路径
fit(X, y[, sample_weight, check_input, …]) 从训练集(X, y)构建决策树回归器
get_depth() 返回决策树的深度
get_n_leaves() 返回决策树的叶节点数
get_params([deep]) 获取这个估计器的参数
predict(X[, check_input]) 预测X的类或回归值
score(X, y[, sample_weight]) 返回预测的决定系数R^2
set_params(**params) 设置这个估计器的参数
__init__(*, criterion='mse', splitter='random', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', random_state=None, min_impurity_decrease=0.0, min_impurity_split=None, max_leaf_nodes=None, ccp_alpha=0.0)

源码

初始化self。请参阅help(type(self))以获得准确的说明

apply(X, check_input=True)

源码

返回每个样本预测为叶子的索引

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
样本数据
check_input bool, default=True
允许绕过几个输入检查。除非您知道自己在做什么,否则不要使用此参数。
返回值 说明
X_leaves array-like of shape (n_samples,)
对于x中的每个数据点x,返回叶子x的索引。叶片编号在[0; self.tree_.node_count),可能在编号中带有空值
cost_complexity_pruning_path(X, y, sample_weight=None)

源码

在最小代价复杂度剪枝过程中计算剪枝路径

有关修剪过程的详细信息,请参见最小成本复杂性修剪

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
训练样本数据
y array-like of shape (n_samples,) or (n_samples, n_outputs)
目标值(类标签)为整数或字符串
sample_weight array-like of shape (n_samples,), default=None
样本权重。如果为None,则对样本进行平均加权。在每个节点中搜索拆分时,将忽略创建净净值为零或负权重的子节点的拆分。如果拆分会导致任何单个类在任一子节点中都负负重,则也将忽略拆分。
返回值 说明
ccp_path Bunch
类字典的对象
ccp_alphas ndarray
修剪过程中子树的有效阿尔法值
impurities ndarray
ccp_alphas中对应alpha值的子树叶子的杂质之和。
decision_path(X, check_input=True)

源码

返回树中的决策路径

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
样本数据
check_input bool, default=True
允许绕过几个输入检查。除非您知道自己在做什么,否则不要使用此参数。
返回值 说明
indicator sparse matrix of shape (n_samples, n_nodes)
返回一个节点指示器CSR矩阵,其中非零元素表示样本经过节点。
property feature_importances_

返回特征的重要性

特征的重要性计算为该特征带来的标准的(标准化)总缩减。这也被称为基尼重要性。

注意: 基于杂质的特征重要性可能会误导高基数特征(许多唯一值)。另见 sklearn.inspection.permutation_importance

返回值 说明
feature_importances_ ndarray of shape (n_features,)
按功能对标准的总归约化进行归一化(基尼重要性)
fit(X, y, sample_weight=None, check_input=True, X_idx_sorted=None)

源码

从训练集(X, y)构建决策树回归器

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
训练样本
y array-like of shape (n_samples,) or (n_samples, n_outputs)
目标值(真实数字)
sample_weight array-like of shape (n_samples,), default=None
样本的权重,如果为None,则对样本进行平均加权。在每个节点中搜索拆分时,将忽略创建净净值为零或负权重的子节点的拆分。
check_input bool, default=True
允许绕过几个输入检查。除非您知道自己在做什么,否则不要使用此参数。
X_idx_sorted array-like of shape (n_samples, n_features), default=None
如果在同一数据集上生长了许多树,则可以在树之间缓存顺序。如果为None,则将在此处对数据进行排序。除非您知道要做什么,否则不要使用此参数。
返回值 说明
self DecisionTreeRegressor
拟合估计器
get_depth()

源码

返回决策树的深度

树的深度是根和叶子之间的最大距离

返回值 说明
self.tree_.max_depth int
树的最大深度
get_n_leaves()

源码

返回决策树的叶节点数

返回值 说明
self.tree_.n_leaves int
叶子的数量
get_params(deep=True)

源码

获取这个估计器的参数

参数 说明
deep bool, default=True
如果为True,将返回此估计器的参数以及包含的作为估计器的子对象。
返回值 说明
params mapping of string to any
参数名称映射到它们的值
predict(X, check_input=True)

源码

预测X的类或回归值

对于分类模型,返回X中每个样本的预测类。对于回归模型,返回基于X的预测值。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
样本数据
check_input bool, default=True
允许绕过几个输入检查。除非您知道自己在做什么,否则不要使用此参数
返回值 说明
y array-like of shape (n_samples,) or (n_samples, n_outputs)
预测的类,或预测的值
score(X, y, sample_weight=None)

源码

返回预测的决定系数R^2

参数 说明
X array-like of shape (n_samples, n_features)
测试样本
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真实值
sample_weight array-like of shape (n_samples,), default=None
样本权重
返回值 说明
score float
R^2 of self.predict(X) wrt. y.

注释:

调用score回归器时使用的R2得分multioutput='uniform_average'从0.23版本开始使用 ,以与默认值保持一致r2_score。这会影响score所有多输出回归变量的方法(MultiOutputRegressor除外)

set_params(**params)

源码

设置此估算器的参数

该方法适用于简单的估计器以及嵌套对象(例如管道)

参数 说明
**params dict
估算器参数
返回值 说明
self object
估算器实例