当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn DecisionTreeRegressor用法及代码示例


本文简要介绍python语言中 sklearn.tree.DecisionTreeRegressor 的用法。

用法:

class sklearn.tree.DecisionTreeRegressor(*, criterion='squared_error', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, ccp_alpha=0.0)

决策树回归器。

在用户指南中阅读更多信息。

参数

criterion{“squared_error”、“friedman_mse”、“absolute_error”、“poisson”},默认=”squared_error”

测量分割质量的函数。支持的标准是均方误差的“squared_error”,它等于作为特征选择标准的方差减少,并使用每个终端节点的平均值来最小化 L2 损失,“friedman_mse”,它使用均方误差和弗里德曼的潜在改进分数分裂,“absolute_error” 表示平均绝对误差,它使用每个终端节点的中值最小化 L1 损失,“poisson” 使用泊松偏差的减少来找到分裂。

splitter{“best”, “random”},默认=”best”

用于在每个节点处选择拆分的策略。支持的策略是“best” 选择最佳分割和“random” 选择最佳随机分割。

max_depth整数,默认=无

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

min_samples_splitint 或浮点数,默认=2

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

  • 如果是 int,则将 min_samples_split 视为最小数字。
  • 如果是浮点数,那么 min_samples_split 是一个分数,而 ceil(min_samples_split * n_samples) 是每个拆分的最小样本数。
min_samples_leafint 或浮点数,默认=1

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

  • 如果是 int,则将 min_samples_leaf 视为最小数字。
  • 如果是浮点数,那么 min_samples_leaf 是分数,而 ceil(min_samples_leaf * n_samples) 是每个节点的最小样本数。
min_weight_fraction_leaf浮点数,默认=0.0

需要在叶节点处的权重总和(所有输入样本的)的最小加权分数。当未提供sample_weight 时,样本具有相同的权重。

max_featuresint、float 或 {“auto”, “sqrt”, “log2”},默认 = 无

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

  • 如果是 int,则在每次拆分时考虑 max_features 特征。
  • 如果是浮点数,那么 max_features 是一个分数,并且在每次拆分时都会考虑 int(max_features * n_features) 特征。
  • 如果 “auto”,那么 max_features=n_features
  • 如果 “sqrt”,那么 max_features=sqrt(n_features)
  • 如果 “log2”,那么 max_features=log2(n_features)
  • 如果没有,那么 max_features=n_features

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

random_stateint、RandomState 实例或无,默认=无

控制估计器的随机性。即使 splitter 设置为 "best" ,这些特征总是在每次拆分时随机排列。当 max_features < n_features 时,算法将在每次拆分时随机选择 max_features,然后再找到其中的最佳拆分。但是,即使 max_features=n_features ,最好的拆分可能会因不同的运行而有所不同。就是这样,如果标准的改进对于几个拆分是相同的,并且必须随机选择一个拆分。为了在拟合期间获得确定性行为,random_state 必须固定为整数。有关详细信息,请参阅词汇表。

max_leaf_nodes整数,默认=无

以best-first 方式用max_leaf_nodes 种植一棵树。最佳节点定义为杂质的相对减少。如果 None 则无限数量的叶节点。

min_impurity_decrease浮点数,默认=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是右孩子的样本数.

N , N_t , N_t_RN_t_L 都是指加权和,如果通过了 sample_weight

ccp_alpha非负浮点数,默认=0.0

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

属性

feature_importances_ndarray 形状 (n_features,)

返回特征重要性。

max_features_int

max_features 的推断值。

n_features_int

已弃用:属性 n_features_ 在 1.0 中已弃用,并将在 1.2 中删除。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_outputs_int

执行fit 时的输出数。

tree_树实例

基础树对象。请参考 help(sklearn.tree._tree.Tree) 了解 Tree 对象的属性和了解决策树结构了解这些属性的基本用法。

注意

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

参考

1

https://en.wikipedia.org/wiki/Decision_tree_learning

2

L. Breiman、J. Friedman、R. Olshen 和 C. Stone,“分类和回归树”,Wadsworth,Belmont,CA,1984 年。

3

T. Hastie、R. Tibshirani 和 J. Friedman。 “统计学习要素”,施普林格,2009 年。

4

L. Breiman 和 A. Cutler,“Random Forests”,https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

例子

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.tree import DecisionTreeRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> regressor = DecisionTreeRegressor(random_state=0)
>>> cross_val_score(regressor, X, y, cv=10)
...                    
...
array([-0.39..., -0.46...,  0.02...,  0.06..., -0.50...,
       0.16...,  0.11..., -0.73..., -0.30..., -0.00...])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.tree.DecisionTreeRegressor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。