周志华《机器学习》课后习题解答系列(五):Ch4.3 - 编程实现ID3算法

本文详细介绍了如何用Python编程实现ID3决策树算法,包括数据预处理、决策树节点类建立、递归实现决策树生成、最优属性选择以及训练集和测试集的划分。通过可视化和实验分析,探讨了不同划分方式对预测精度的影响,并提出剪枝以提高决策树的泛化能力。
摘要由CSDN通过智能技术生成

这里采用Python-sklearn的方式,环境搭建可参考 数据挖掘入门:Python开发环境搭建(eclipse-pydev模式).

相关答案和源代码托管在我的Github上:PY131/Machine-Learning_ZhouZhihua.

4.3 编程实现ID3算法

这里写图片描述
这里写图片描述

这里基于python编程实现的方式,详细解答和编码过程如下:(查看完整代码):

1.获取数据、查看数据、预分析

这里由数据表生成.csv文件(注意中文字符的编码格式)。采用pandas.read_csv()读取数据,然后采用seaborn可视化部分数据来进行初步判断。

观察数据可知,变量包含’色泽’等8个属性,其中6个标称属性,2个连续属性。类标签为西瓜是否好瓜(两类):

下面是一些数据可视化图像:

下图是含糖率和密度两个连续变量的可视化图,这个图在之前的练习中也有出现:

这里写图片描述

下图则是更多的变量两两组合可视化图:

这里写图片描述

基于可视化手段进行一些分析,可以大概了解数据的分布及其与类别的关系。

2.自己编程实现ID3算法

在进行编程之前,先做一些分析如下:

  • 对于树形结构,可以创建节点类来进行操作,根据书p74决策树基本算法,广泛采用递归操作
  • 对于连续属性(密度、含糖率),参考书p83,对其进行离散化(可采用二分法);
  • 对于标称属性(色泽、纹理等),考虑Python字典,方便操作其特征类别(如:’色泽’ -> ‘青绿’,’乌黑’,’浅白’);
  • 由于数据集完整,这里暂不考虑缺值问题(若需考虑,可参考书p86-87的加权思路 -> C4.5算法);

下面是实现过程:

2.1 建立决策树节点类

该节点类包含当前节点的属性,向下划分的属性取值,节点的类标签(叶节点有效,为通用性而保留所有节点类标签);

样例代码如下:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值