一、简介
(1)本章主要使用字典来存储决策树,但字典的可读性太低。后面将用matplotlib将其形象化。
优点:计算复杂度不高、输出结果易于理解、对中间值的缺失不敏感、可以处理不相关特征数据
缺点:可能会产生过度匹配问题
(2)#创建决策树的伪代码函数createBranch()如下:
检查数据集中的每个子项是否属于同一个分类
if so return 类标签;
else
寻找划分数据集的最好特征
划分数据集
创建分支结点
for 每个划分的子集
调用createBranch并增加返回结果到分支结点中
return 分支结点
二、构造决策树
一步一步将上述伪代码转为Python代码
1 划分数据集
划分数据集的原则是:将无序的数据变得更加有序。在这里,用“信息增益(information gain)”来衡量数据的有序程度。信息增益越大,则数据变得更有序。
数据假定为:
第一列为feature1,第二列为feature2,第三列为label
信息增益=原始数据集的熵之和-新数据集的熵之和
那么什么是熵(entropy)呢?(这边只介绍公式,具体内容大家有兴趣的自行了解)熵来源于信息论之父克劳德·香农。对于指定label的数据集,其熵的计算公式为:
e=-pi*log(2,p