0%

决策树DecisionTreeClassifier参数

函数原型

1
2
3
4
5
6
7
8
9
10
11
12
sklearn.tree.DecisionTreeClassifier(criterion=’gini’, 
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,
class_weight=None, presort=False)

参数解析

参数含义
criterion特征选择标准,[entropy, gini](default=gini) 前者是信息熵ID4.5,后者是基尼系数CART
splitter特征划分标准,best or random 前者是在所有特征中找最好的切分点 后者是在部分特征中,默认的best适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐random
max_depth决策树最大深度,int or None, optional (default=None)设置决策随机森林中的决策树的最大深度,深度越大,越容易过拟合,推荐树的深度为: $ 10 \to 100 $ 之间。
min_samples_split内部节点再划分所需最小样本数,int, float, optional (default=2) 如果是 int,则取传入值本身作为最小样本数; 如果是float,则去 ceil(min_samples_split * 样本数量)的值作为最小样本数,即向上取整。
min_samples_leaf叶子节点最少样本数,如果是 int,则取传入值本身作为最小样本数; 如果是 float,则 ceil(min_samples_leaf * 样本数量)的值作为最小样本数,即向上取整。 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。
min_weight_fraction_leaf这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝默认是 $ 0 $ ,就是不考虑权重问题.
max_featuresNone(所有),log2sqrtN 特征小于50的时候一般使用所有的
random_state当将参数splitter设置为random时,可以通过该参数设置随机种子号,默认为None,表示使用np.random产生的随机种子号。
max_leaf_nodes设置决策树的最大叶子节点个数,该参数与max_depth等参数参数一起,限制决策树的复杂度,默认为None,表示不加限制。
min_impurity_decrease打算划分一个内部结点时,只有当划分后不纯度(可以用criterion参数指定的度量来描述)减少值不小于该参数指定的值,才会对该结点进行划分,默认值为 $ 0 $ 。可以通过设置该参数来提前结束树的生长。
min_impurity_split打算划分一个内部结点时,只有当该结点上的不纯度不小于该参数指定的值时,才会对该结点进行划分,默认值为 $ 1e^{-7} $ 。该参数值0.25版本之后将取消,由min_impurity_decrease代替。
class_weight设置样本数据中每个类的权重,这里权重是针对整个类的数据设定的,默认为None,即不施加权重。用户可以用字典型或者字典列表型数据指定每个类的权重,假设样本中存在4个类别,可以按照 [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}]这样的输入形式设置 $ 4 $ 个类的权重分别为1、5、1、1,而不是[{1:1}, {2:5}, {3:1}, {4:1}]的形式。该参数还可以设置为balance,此时系统会按照输入的样本数据自动的计算每个类的权重,计算公式为: $ n_samples / ( n_classes * np.bincount(y) ) $ ,其中n_samples表示输入样本总数,n_classes表示输入样本中类别总数,np.bincount(y)表示计算属于每个类的样本个数,可以看到,属于某个类的样本个数越多时,该类的权重越小。若用户单独指定了每个样本的权重,且也设置了class_weight参数,则系统会将该样本单独指定的权重乘以class_weight指定的其类的权重作为该样本最终的权重。
presort设置对训练数据进行预排序,以提升结点最优划分属性的搜索,默认为False。在训练集较大时,预排序会降低决策树构建的速度,不推荐使用,但训练集较小或者限制树的深度时,使用预排序能提升树的构建速度。