一.本文前半部分使用Python语言实现决策树分类的CART算法,
输入:训练数据集
输出:CART分类决策树
step1:对于当前训练数据集,遍历所有属性及其所有可能的切分点,寻找最佳切分属性及其最佳切分点,
使得切分之后的基尼指数最小,利用该最佳属性及其最佳切分点将训练数据集切分成两个子集,分别对应
着判别结果是true和判别结果是false。
step2:对step1生成的两个数据子集递归地调用step1,直至满足停止条件。
step3:生成CART决策树
算法的停止条件为:结点中的样本数小于给定阀值,或样本集的基尼指数小于给定阀值(样本基本属于同一类),或者没有更多特征。
所有代码都位于一个文件Cart.py中
class node:
def __init__(self, col=-1, value=None, results=None, trueBranch=None, falseBranch=None):
self.col = col #用于切分数据集的属性的列索引值
self.value = value #为了使判别结果为true,当前列必须匹配的值
self.results = results #当前节点的类别(字典),若是叶节点,则存储判别结果,否则是None
self.trueBranch = trueBranch #判别结果为true时生成的子树
self.falseBranch = falseBranch #判别结果为