决策树分类任务

  • 实验目的

1. 掌握信息熵与信息增益相关概念

2. 掌握构建决策树方法(ID3)

3. 掌握极大似然法选择节点

  • 实验内容

1. 编写loadDataSet() splitDataSet() 加载处理数据集

2. 编写calcShannonEnt()计算信息熵

3. 编写chooseBestFeatureToSplit() 计算信息增益,并返回最大特征

4. 编写majorityCnt()统计classList中出现次数最多的元素(类标签)

5. 编写createTree()实现ID3算法创建决策树

6. 编写classify()实现分类预测

7. 附加题了

  • 实验步骤
  1. 编写loadDataSet()、splitDataSet() 加载处理数据集

loadDataSet()函数:

(1)利用pandas库加载训练集

解并使用sklearn构建决策树、并完成可视化

 

(2)提取标签

  1. 返回数据集和分类属性

splitDataSet()函数:

  1. 创建空列表,返回数据集

(2)遍历数据集,将选取的特征从中拿出来,删掉,再将后半截数据集添加上去

2. 编写calcShannonEnt()计算信息熵

(1)统计样本数和每个类别的频数

  1. 利用for循环遍历每一行样本,分别统计每个分类下的次数,便于后面算概率

  1. 利用信息熵公式,计算信息熵

3. 编写chooseBestFeatureToSplit() 计算信息增益,并返回最大特征

(1)做好数据准备工作,为后续做好准备

  1. 计算信息增益

  1. 利用if判断语句,如果该个信息增益大于上一个信息增益,则将该信息增益赋值给最大信息增益,直到找到最大的信息增益。

  1. 编写majorityCnt()统计classList中出现次数最多的元素(类标签)

(1)遍历列表,统计每个元素出现的次数,再根据字典的值进行降序排列

5. 编写createTree()实现ID3算法创建决策树

(1)取出分类标签,如果类别完全相同,则停止继续划分,遍历完所有特征时返回出现次数最多的类标签

(2)调用choochooseBestFeatureToSplit(),选择最优特征并建立最优特征的标签

(3)根据最优特征的标签生成树,删除已经使用的特征标签,并得到训练集中所有最优特征的属性值

6. 编写classify()实现分类预测

(1)树根代表的属性,所在属性标签的位置,即第几个属性

  1. 将存储决策结果到result.csv

  1. 实现main()函数

  1. 结果result.csv

......

  1. 附加题了解并使用sklearn构建决策树、并完成可视化

(1)nodeTxt为要显示的文本,centerPt为文本的中心点,箭头所在的点,parentPt为指向文本的点

(2)得到节点叶子

(3)获得决策树的深度

(4)绘制中间文本

(5)定义并获得决策树的叶子结点数以及第一个特征,x坐标为当前树的叶子结点数目除以整个树的叶子结点数再除以2,y为起点。

(6)利用matplotlib库,定制横纵坐标、决策树的高度、宽度,最终显示图像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值