随机森林中的各个参数(参数详细阐释)

我们先看看随机森林里有哪些参数

n_estimators: Any = 100

criterion:Any = "gini"

max_depth: Any = None,

min_samples_split: Any = 2

min_samples_leaf: Any =1

min_weight_fraction_leaf: Any = 0

max_features: Any ="sqrt"

max_leaf_nodes: Any = None,

min_impurity_decrease: Any = 0.0

bootstrap:Any = True,

oob_score: Any = False

random_state: Any = None

verbose: Any =0

warm_start:Any = False

class_weight: Any = None

这些是RandomForestClassifier中的参数

①n_estimators: Any = 100,森林中树的数量,这个值越大越稳定,默认为100。

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

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

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

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

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

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

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

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

⑩bootstrap:Any = True,如果bootstrap=True,则使用替换方法绘制样本,也就是替换着抽取样本,而如果bookstrap=False,则不替换抽取样本,这个默认为True(我认为非必要就不要改这个值,这就是一种抽取样本的方式)。

⑪oob_score: Any = False,判断是否使用误差,这个值默认是False,(可能当误差比较大的时候,这个值就要编程True,一般应该是用不到的)。

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

⑬verbose: Any =0,用于判断是否生成日志信息,默认为0,也就是不生成日志信息。

⑭warm_start:Any = False,这个参数是判断是否基于上一次的结果进行运算,默认为False(当想不断提高精度的时候应该会用到这个值)。

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

这便是随机森林内的参数,希望大家可以收获满满,早日学会随机森林算法!!!

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