决策树中各个参数(内有详细参数分析)

首先,我们要知道决策树有哪些参数

criterion: Any = "gini"

splitter: Any ="best"

max_depth: Any = None.

min_samples_split: Any = 2

min_samples_leaf: Any = 1

min_weight_fraction_leaf: Any = 0.

max_features: Any = None.

random_state: Any = None.

max_leaf_nodes: Any = None,

min_impurity_decrease: Any = 0.

class_weight: Any = None

这是DecisionTreeClassifier里的参数,下面我给你们一一介绍

①criterion,他默认是基尼系数,gini指的是表示样本被分错的概率,gini参数越小,表示集合越集中,这里还可以是entropy,也就是信息熵,信息熵表示与相关性程度,熵越高,偏离的就越多,也就是离散程度大,相关性差,相反,熵越低,也就与越其接近,相关性搞,我们这里选用的是基尼系数。

②splitter,默认是best,也可以设置为best,best参数是根据算法选择最佳的切分特征,如果我们样本的数据量特别大的时候,就用random。

③max_depth,他决定了最大深度,指的是树的层数,默认值是None,所以我们看最后的代码将max_depth的值修改了以后,所生成的图像的层数是不一样的。

④min_samples_split, 内部节点再划分所需最小样本数,可选参数,默认是2,这个值限制了子树继续划分的条件,他表示的是最小的样本数,如果样本数小于min_samples_split,则会停止划分;如果这个参数我们输入的是一个浮点数的话,采取向上取整的原则。理论上这个值一般不用变动,只有当样本特别大的时候,建议向上调整这个值。(感觉这个参数和max_depth差不多,都是用来划分树的长度啥的)。

⑤min_samples_leaf,这个参数与上面的参数很相似,上面的那个参数是针对于节点而言的,而这个是针对于节点后的子节点,停止划分的规则应该是一样的。

⑥min_weight_fraction_leaf,叶子节点最小的样本权重和,参数默认是0。如果小于这个值,则会和兄弟节点一起被剪枝。因此,一般当有很大偏差时,会引入这个参数,减小偏差。(防止有大的偏差用的)。 

⑦max_features,子集特征的个数,这个值越小,森林里的树就越不一样,默认是用sqrt来取值,auto,log2均可取值,sqrt和auto是取其开方数,而log2是取对数。 

⑧random_state,他的默认值也是None,若是使用None则是使用随机数生成器,但一般是建议设置一个整数进去(没有设置随机数,则随机出来的数随时间而变化,而设置了随机数,随机出来的数不随时间的变化而变化。)

⑨max_leaf_nodes, 最大叶子节点数,参数默认是None。通过限制最大叶子节点数,可以防止过拟合。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。特征少,不用管,特征多,用这个,通过交叉验证得到(我也不知道交叉验证是啥,可能是一种高深的计算吧)。

⑩min_impurity_decrease,节点划分最小不纯度,参数默认是1e-7。这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息熵)小于这个值,则该节点不再生成子节点,即为叶子节点。(应该可以理解为criterion的下限)。

⑪class_weight,类别权重,参数默认是None,也可以字典、字典列表、balanced。主要是为了防止训练集某些类别的样本过多,导致训练的决策树过于偏向这些类别。类别的权重可以通过{class_label:weight}这样的格式给出,这里可以自己指定各个样本的权重,或者用balanced,使用balanced算法会自己计算权重,样本量少的类别所对应的样本权重会高。当然,如果样本类别分布没有明显的偏倚,直接不用管这个参数。(样本过多才用,过少直接不管)。

这便是决策树里面的参数,希望大家可以收获满满!

你可能感兴趣的:(决策树,算法,机器学习,python,随机森林,windows)