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_ | intfit 执行时的输出数量 |
tree_ | Tree 基础的Tree对象。 help(sklearn.tree._tree.Tree) 有关树对象的属性, 请参阅, 有关这些属性的基本用法,请参阅 决策树的结构。 |
另见
sklearn.ensemble.ExtraTreesClassifier
sklearn.ensemble.ExtraTreesRegressor
注释
控制树(例如max_depth
,min_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 | ndarrayccp_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 估算器实例 |