前言
本文仅记录Random Forest python代码实现。关于Random Forest 算法模型不做深入讨论。单颗树使用的是二叉搜索树。
代码简单流程示意图:
核心思路说明:
1、数据加载和预处理
2、决策树一类算法,重要点在于树停止生长的条件,如下:(当不满足树停止生长的条件时,就可以生长,二者是互斥的)
a>当前的结点的左或右子树不能为空
b>当前结点中实例的个数不能小于初始化时结点实例个数的最小值(假设不做限制,取极限值为0时,自然得出矛盾点)
c>当前树的深度不能超过初始化树的深度(防止过拟合,这是算法自身的精髓)
(此处没有对每棵树使用的特征个数,树的个数做限制)
3、最优特征选择的指标是: 基尼指数(Gini_index)
核心代码说明:
split()函数说明:
校验停止生长条件:
是否属于同一个类(即只有一个结点),
当前树的深度,
当前左右子树实例个数是否满足生长的条件。
如果上述条件没有一个满足则生长,调用get_split()函数,选取最优特征划分出左右子树,递归调用split()函数