分类决策树API

分类决策树

DecisionTreeClassifiercriterion ='gini'splitter ='best'max_depth = Nonemin_samples_split = 2min_samples_leaf = 1min_weight_fraction_leaf = 0.0max_features = Nonerandom_state = Nonemax_leaf_nodes = Nonemin_impurity_decrease = 0.0min_impurity_split = Noneclass_weight = Nonepresort = False 

参数:

criterion : string,optional(default =“gini”)

衡量分裂质量的功能。支持的标准是基尼杂质的“gini”和信息增益的“熵”。

splitter : string,optional(default =“best”)

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

max_depth : int或None,可选(默认=无)

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

min_samples_split : int,float,optional(default = 2)

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

  • 如果是int,则考虑min_samples_split为最小数量。
  • 如果是浮点数,那么它min_samples_split是一个分数, 是每个分割的最小样本数。ceil(min_samples_split * n_samples)

更改版本0.18:添加了分数的浮点值。

min_samples_leaf : int,float,optional(default = 1)

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

  • 如果是int,则考虑min_samples_leaf为最小数量。
  • 如果是float,那么它min_samples_leaf是一个分数, 是每个节点的最小样本数。ceil(min_samples_leaf * n_samples)

更改版本0.18:添加了分数的浮点值。

min_weight_fraction_leaf : float,optional(默认= 0。)

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

max_features : int,float,string或None,可选(默认=无)

寻找最佳分割时要考虑的功能数量:

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

注意:在找到节点样本的至少一个有效分区之前,搜索分割不会停止,即使它需要有效地检查多个max_features功能。

random_state : int,RandomState实例或None,可选(默认=无)

如果是int,则random_state是随机数生成器使用的种子; 如果是RandomState实例,则random_state是随机数生成器; 如果为None,则随机数生成器是由其使用的RandomState实例np.random

max_leaf_nodes : int或None,可选(默认=无)

max_leaf_nodes以最好的方式种树。最佳节点定义为杂质的相对减少。如果为None则无限数量的叶节点。

min_impurity_decrease : float,optional(默认= 0。)

如果该分裂导致杂质的减少大于或等于该值,则将分裂节点。

加权杂质减少方程式如下:

N_t  /  N  *  (杂质 -  N_t_R  /  N_t  *  right_impurity 
                    -  N_t_L  /  N_t  *  left_impurity )

N样本总数在哪里,N_t是当前节点N_t_L的样本数,左子项中N_t_R的样本数,以及右子项中的样本数。

NN_tN_t_R并且N_t_L都指的是加权和,如果sample_weight获得通过。

版本0.19中的新功能。

min_impurity_split : float,(默认值= 1e-7)

树木生长早期停止的门槛。如果节点的杂质高于阈值,节点将分裂,否则它是叶子。

从版本0.19min_impurity_split开始不推荐使用已被弃用,支持 min_impurity_decrease0.19。默认值 min_impurity_split将在0.23中从1e-7变为0,并且将在0.25中删除。请min_impurity_decrease改用。

class_weight : dict,dicts 列表,“balanced”或None,默认= None

与表单中的类相关联的权重。如果没有给出,所有课程都应该有一个重量。对于多输出问题,可以按与y列相同的顺序提供dicts列表。{class_label: weight}

请注意,对于多输出(包括多标记),应为其自己的dict中的每个列的每个类定义权重。例如,对于四类多标签分类权重应为[{0:1,1:1},{0:1,1:5},{0:1,1:1},{0:1,1: 1}]而不是[{1:1},{2:5},{3:1},{4:1}]。

“平衡”模式使用y的值自动调整与输入数据中的类频率成反比的权重 n_samples / (n_classes * np.bincount(y))

对于多输出,y的每列的权重将相乘。

请注意,如果指定了sample_weight,这些权重将与sample_weight(通过fit方法传递)相乘。

presort : bool,optional(默认值= False)

是否预先分配数据以加快拟合中最佳分割的发现。对于大型数据集上的决策树的默认设置,将其设置为true可能会降低培训过程的速度。当使用较小的数据集或受限深度时,这可以加速训练。

属性:

classes_ : shape = [n_classes]的数组或此类数组的列表

类标签(单输出问题),或类标签数组列表(多输出问题)。

feature_importances_ : shape数组= [n_features]

返回要素重要性。

max_features_ : int,

max_features的推断值。

n_classes_ : int或list

类的数量(对于单个输出问题),或包含每个输出的类数的列表(对于多输出问题)。

n_features_ : int

fit执行时的功能数量。

n_outputs_ : int

fit执行时的输出数量。

tree_ : 树对象

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

 

重要的参数解析

criterion:
                     

                     特征选择标准,默认值为‘gini’。(entropy, gini)

                     默认gini,即CART算法。

splitter:
                   

                     特征划分标准,默认值为‘best’。(best, random)

                     best在特征的所有划分点中找出最优的划分点,random随机的在部分划分点中找局部最优的划分点。

                     默认的‘best’适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐‘random’。

max_depth:
                     

          决策树最大深度。默认值是‘None’。(int,  None) 一般数据比较少或者特征少的时候可以不用管这个值,如果模型样本数量多,特征也多时,推荐限制这个最大深度,具体取值取决于数据的分布。常用的可以取值10-100之间,常用来解决过拟合。

min_samples_split:
                      

           内部节点再划分所需最小样本数。默认值为2。(int, float)

           如果是int,则取传入值本身作为最小样本数;如果是float,则取ceil(min_samples_split*样本数量)作为最小样本数。(向上取整)

min_samples_leaf:
                      

           叶子节点最少样本数。

           如果是int,则取传入值本身作为最小样本数;如果是float,则取ceil(min_samples_leaf*样本数量)的值作为最小样本数。这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。

min_weight_fraction_leaf:
                     

           叶子节点最小的样本权重和。默认为0。(float)

           这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。

           默认是0,就是不考虑权重问题,所有样本的权重相同。一般来说如果我们有较多样本有缺失值或者分类树样本的分布类别偏差很大,就会引入样本权重,这时就要注意此值。

max_features:
                      

           在划分数据集时考虑的最多的特征值数量。

           int值,在每次split时最大特征数;float值表示百分数,即(max_features*n_features);

random_state:
                     

           默认是None,(int, randomSate instance, None)

max_leaf_nodes:
                        

           最大叶子节点数。默认为None。(int, None)

          通过设置最大叶子节点数,可以防止过拟合,默认情况下是不设置最大叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征多,可以加限制,具体的值可以通过交叉验证得到。

min_impurity_decrease:
         

         节点划分最小不纯度。默认值为‘0’。(float,)

         限制决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小与这个阈值,则该节点不再生成子节点。

min_impurity_split:
                         

信息增益的阀值。决策树在创建分支时,信息增益必须大于这个阀值,否则不分裂。

class_weight:
                        

         类别权重。默认为None,(dict, list of dicts, balanced)

         指定样本各类别的权重,主要是为了防止训练集某些类别的样本过多,导致训练的决策树过于偏向这些类别。balanced,算法自己计算权重,样本量少的类别所对应的样本权重会更高。如果样本类别分布没有明显的偏倚,则可以不管这个参数。不适用于回归树,sklearn.tree.DecisionTreeRegressor.

presort:
                        

 bool,默认是False,表示在进行拟合之前,是否预分数据来加快树的构建。对于数据集非常庞大的分类,presort=true将导致整个分类变得缓慢;当数据集较小,且树的深度有限制,presort=true才会加速分类。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值