sklearn.tree.DecisionTreeRegressor¶
class sklearn.tree.DecisionTreeRegressor(*, criterion='mse', 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, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)
[源码]
决策树回归器。
在用户指南中阅读更多内容。
参数 | 说明 |
---|---|
criterion | {“mse”, “friedman_mse”, “mae”}, default=”mse” 测量分割质量的函数。支持的标准是均方误差的“ mse”,等于方差减少作为特征选择标准,并使用每个终端节点的均值“ friedman_mse”来最小化L2损失,该方法使用均方误差和弗里德曼改进分数作为潜在值拆分,并使用“ mae”表示平均绝对误差,使用每个终端节点的中值将L1损失最小化。 版本0.18中的新功能:平均绝对误差(MAE)标准。 |
splitter | {“best”, “random”}, default=”best” 用于在每个节点上选择拆分的策略。支持的策略是“best”选择最佳拆分,“random”选择最佳随机拆分。 |
max_depth | int, default=None 树的最大深度。如果为None,则将节点展开,直到所有叶子都是纯净的,或者直到所有叶子都包含少于min_samples_split个样本。 |
min_samples_split | int or float, default=2 拆分内部节点所需的最少样本数: - 如果为int,则认为 min_samples_split 是最小值。- 如果为float, min_samples_split 则为分数, ceil(min_samples_split * n_samples) 是每个拆分的最小样本数。在版本0.18中更改:添加了分数的浮点值。 |
min_samples_leaf | int or float, default=1 在叶节点处需要的最小样本数。任何深度的分割点只有在左、右分支中至少留下min_samples_leaf训练样本时才会被考虑。这可能具有平滑模型的效果,尤其是在回归中。 |
min_weight_fraction_leaf | float, default=0.0 在所有叶节点处(所有输入样本)的权重总和中的最小加权分数。如果未提供sample_weight,则样本的权重相等。 |
max_features | int, float or {“auto”, “sqrt”, “log2”}, default=None 寻找最佳分割时要考虑的特征数量: - 如果为int,则 max_features 在每个分割处考虑特征。- 如果为float, max_features 则为小数,并且int(max_features * n_features) 是在每次拆分时考虑要素。- 如果为“auto”,则为 max_features=n_features 。- 如果是“ sqrt”,则 max_features=sqrt(n_features) 。- 如果为“ log2”,则为 max_features=log2(n_features) 。- 如果为”None“,则 max_features=n_features 。注:直到找到至少一个有效的节点样本分区,分割的搜索才会停止,即使它需要有效检查多个 max_features 要素也是如此。 |
random_state | int, RandomState instance, default=None 控制估算器的随机性。即使 splitter 设置为"best" ,这些特性总是在每次拆分时随机排列。当max_features < n_features 时,算法将在每个分割处随机选择max_features 特征,然后在其中找到最佳分割。即使max_features=n_features ,但最佳分割可能因不同的运行而有所不同,这种情况下,如果标准的改进对于多个分割是相同的,必须随机选择一个分割。为了在拟合过程中获得确定性行为,必须将其固定为整数。有关详细信息,请参见词汇表。 |
max_leaf_nodes | int, default=None 以最好的方式种植一棵树,树上有 max_l 节点。最佳节点定义为杂质相对减少。如果没有,则叶节点的数量不受限制。 |
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 是右子节点中的样本数。N ,N_t ,N_t_R 和N_t_L 都指的是加权和,如果sample_weight 可以通过。版本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 将其代替。 |
presort | deprecated, default=’deprecated’ 此参数已弃用,并将在v0.24中删除。 从0.22版开始不推荐使用。 |
ccp_alpha | non-negative float, default=0.0 用于最小代价复杂度修剪的复杂度参数。选择代价复杂度最大且小于 ccp_alpha 的子树。默认情况下,不执行修剪。有关详细信息,请参见 最小成本复杂性修剪。0.22版中的新功能。 |
属性 | 说明 |
---|---|
feature_importances_ | ndarray of shape (n_features,) 返特征的重要性。 |
max_features_ | int max_features的推断值。 |
n_features_ | intfit 执行时的特征数量。 |
n_outputs_ | intfit 执行时的输出数量。 |
tree_ | Tree 基础的Tree对象。有关树对象的属性请参阅 help(sklearn.tree._tree.Tree) , 有关这些属性的基本用法,请参阅 决策树结构。 |
另见
决策树分类器。
注
控制树(例如max_depth
,min_samples_leaf
等)大小的参数的默认值会导致树的完全生长和未修剪,这在某些数据集上可能非常大。为了减少内存消耗,应通过设置这些参数值来控制树的复杂性和大小。
参考文献
1 https://en.wikipedia.org/wiki/Decision_tree_learning
2 L. Breiman, J. Friedman, R. Olshen, and C. Stone, “Classification and Regression Trees”, Wadsworth, Belmont, CA, 1984.
3 T. Hastie, R. Tibshirani and J. Friedman. “Elements of Statistical Learning”, Springer, 2009.
4 L. Breiman, and 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)
... # doctest: +SKIP
...
array([-0.39..., -0.46..., 0.02..., 0.06..., -0.50...,
0.16..., 0.11..., -0.73..., -0.30..., -0.00...])
方法 | 说明 |
---|---|
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='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, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)
初始化self。请参阅help(type(self))获取准确的签名。
apply(X, check_input=True)
[源码]
返回每个样本被预测为的叶子的索引。
0.17版中的新功能。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix} of shape (n_samples, n_features) 输入样本。在内部,如果将稀疏矩阵提供给sparse csr_matrix ,它将转换为 dtype=np.float32 。 |
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) 训练输入样本。在内部,如果将稀疏矩阵提供给sparse csr_matrix ,它将转换为 dtype=np.float32 。 |
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 修剪期间子树的有效Alpha。 impurities:ndarray 子树中的杂质总和为 ccp_alphas 中对应的alpha值。 |
decision_path(X, check_input=True)
[源码]
返回树中的决策路径。
版本0.18中的新功能。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix} of shape (n_samples, n_features) 输入样本。在内部,如果将稀疏矩阵提供给sparse csr_matrix ,它将转换为 dtype=np.float32 。 |
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) 训练输入样本。在内部,如果将稀疏矩阵提供给sparse csr_matrix ,它将转换为 dtype=np.float32 。 |
y | array-like of shape (n_samples,) or (n_samples, n_outputs) 目标值(实数)。使用 dtype=np.float64 和 order='C' 获得最高效率。 |
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) 输入样本。在内部,如果将稀疏矩阵提供给sparse csr_matrix ,它将转换为 dtype=np.float32 。 |
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。
系数R ^ 2定义为 (1 - u/v),其中u是平方的残差和((y_true - y_pred) ** 2).sum(),而v是平方的总和((y_true - y_true.mean()) ** 2).sum()。可能的最高分数是1.0,并且可能为负(因为该模型可能会更差)。不管输入特征如何,始终预测y的期望值的常数模型将获得0.0的R ^ 2分数。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 测试样品。对于某些估计量,这可以是预先计算的核矩阵或一般对象列表,而不是shape = (n_samples, n_samples_fitted),其中n_samples_fitted是用于估计量拟合的样本数。 |
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 self.predict(X) wrt. y的R^2 |
注
调用score
回归器时使用的R2得分multioutput='uniform_average'
从0.23版开始使用 ,r2_score
已与默认值保持一致。这会影响score
所有多输出回归变量的方法(除外 MultiOutputRegressor
)。
set_params(**params)
[源码]
设置此估算量的参数。
该方法适用于简单的估计器以及嵌套对象(例如pipelines)。后者具有形式为 <component>__<parameter>
的参数,因此可以更新嵌套对象的每个组件。
参数 | 说明 |
---|---|
**params | dict 估算量参数。 |
返回值 | 说明 |
---|---|
self | object 估算量实例。 |