决策树
【1】创造树
主函数:creattree
输入:待学习的数据包括标签以及数据(x and y)
输出:决策树
思路:
首先判断子树的所有实例类别是否完全相同,若是返回类别即可,
其次判断是都是否已无特征可作为分类依据(所以要更新标签),若是返回大多数实例(majority)的类别即可,
选择令信息增量最大的特征,choose包含calcent以及split,遍历每一个特征计算熵。
ps:与基尼指数为依据有区别,信息增量只需要选择特征(多分支)而基尼指数还需要选择最佳特征值进行划分(二叉树)
按照最优的特征对逐个特征值划分(split)数据分支,根据数据分支作为迭代函数(creattree)的输入对象,直至满足条件(前两个if),迭代停止。
代码:
def createtree(dataset,label):
#类别完全相同则停止继续划分
classlist=[example[-1] for example in dataset]
if classlist.count(classlist[0])==len(classlist):
return classlist[0]#提前结束函数
#遍历完所有特征时返回出现次数最多的类别
if len(label)==0: