题目 1 决策树算法(ID3 算法)
1.1 题目的主要研究内容
(1) 组任务描述:熟悉和掌握决策树的分类原理、实质和过程,掌握决策树典
型算法(ID3、C4.5、CART)的核心思想和实现过程。
(2)个人任务描述:运用 Python 对数据集进行决策树 ID3 算法实现,并且
额外利用 Matplotlib 实现了 ID3 决策树算法的可视化,通过训练样本,对构建出
的决策树进行了结果的判定分析。
1.2 题目研究的工作基础或实验条件
(1)硬件环境(PC 电脑端)
(2)软件环境:语言: python IDLE: pycharm 引用库: numpy、pandas、sklearn
1.3 设计思想
利用 Python 中自带的 numpy 库、pandas 库、sklearn 库,实现决策树算法中 ID3
算法的相关运算并利用列表的形式存储生成决策树;利用传统 for 循环和 if else
循环实现决策树的节点算法迭代;使每个内部节点(非树叶节点)表示在一个属
性上的测试,每个分枝代表一个测试输出,每个树叶节点存放一个类标号;当建
立好决策树后,对于一个未给定类标号的元组,跟踪一条有根节点到叶节点的路
径,该叶节点就存放着该元组的预测。
通过计算经验熵 calcEntropy 及条件经验熵 calcCondEntropy,对于集合中的每
一个标签,统计其出现的概率,并计算频率;创建根节点 N;若 IF 样本集 都
属于同一类 C,则返回 N 为叶节点,标记为类 C; IF len (dataSet)为空 OR 样本集
中所剩的样本数少于某给定值,则返回 N 为叶节点,标记 N 为样本集中出现最
多的类; FOR each feature 中的属性并计算信息增益率 Gain Ratio; 从 N 的测试属
性选择出具有最高信息增益率的属性; IF 测试属性为连续型则找到该属性的分割
阈值; For each 由节点 N 一个新的叶子节点{IF 该叶子节点对应的样本子集为空,
则分裂此叶子节点生成新叶节点,将其标记为样本集中出现最多的类 Else 在该