C4.5决策树Python代码实现

我们知道C4.5决策树与ID3决策树最主要的区别就是C4.5使用信息增益率来划分最优属性。因为使用信息增益来划分属性的话会存在以下这些缺点:对可取属性多的特征有偏好,比如如果把“编号”这一列当作特征也考虑在内,那么可以计算处它的信息增益大于其他的候选特征,因为“编号”有17个可取的数值,产生17个分支,每个分支节点仅包含一个样本,显然这些分支节点的纯度最大。但是,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测。

而使用C4.5决策树算法:使用“信息增益率”来选择最优划分属性,可以很好的克服上述缺点。

所以C4.5代码和ID3代码的主要区别就是划分最有属性这一段。C4.5的划分做法是从候选划分特征中找出信息增益高于平均水平的特征,分别除以比率IVAL,然后再从中选择增益率最高的。IVAL公式如下:

Dv是对应特征下的属性样例个数,D是所有样例个数。

上述代码表达的意思就是从所有信息增益中选出大于平均值的信息增益,计算他的信息增益率,从而求出最高的信息增益率。

C4.5选取最优划分属性的代码如下,先计算信息增益,再计算最优信息增益率:

其余代码在ID3已经详细讲解过,在这里不再赘述。代码如下所示:

下一期CART决策树讲完后,会将所有代码上传百度网盘。请大家持续关注,谢谢大家!

id3决策树 鸢尾花 python_C4.5决策树Python代码实现相关推荐

  1. 决策树原理详解及python代码实现

    决策树算法(信贷中常用来寻找规则) 1.算法原理 1.1 ID3(多叉树分类) 1.2 C4.5(多叉树分类) 1.3 Cart(二叉树分类+回归) 2.ID3.C4.5与Cart比较 3.算法优缺点 ...

  2. 用通俗易懂的方式讲解:决策树模型及案例(Python 代码)

    文章目录 1 决策树模型简介 2 Gini系数(CART决策树) 3 信息熵.信息增益 4 决策树模型代码实现 4.1 分类决策树模型(DecisionTreeClassifier) 4.2 回归决策 ...

  3. 【数学建模】机器学习预测算法(KNN、随机森林、网格搜索对决策树、支持向量机)(Python代码实现)【2021华为杯】

    目录 1 题目 2 数据集介绍及建模目标 3 问题 4 简化描述 5 Python代码实现 1 题目 乳腺癌是目前世界上最常见,致死率较高的癌症之一.乳腺癌的发展与雌激素受体密切相关,有研究发现,雌激 ...

  4. python代码实现决策树分类

    0. 前言 上一篇博客对决策树算法的思想作了描述,也详细写了如何构造一棵决策树.现在希望用python代码来实现它.此处先调用机器学习中的算法库来实现. 2. python代码实现决策树(决策树分类器 ...

  5. 机器学习系列(12)_XGBoost参数调优完全指南(附Python代码)

    机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) 原文链接:http://blog.csdn.net/han_xiaoyang/article/details/5266539 ...

  6. 用通俗易懂的方式讲解:主成分分析(PCA)算法及案例(Python 代码)

    文章目录 知识汇总 加入方式 一.引入问题 二.数据降维 三.PCA基本数学原理 3.1 内积与投影 3.2 基 3.3 基变换的矩阵表示 3.4 协方差矩阵及优化目标 3.5 方差 3.6 协方差 ...

  7. python代码完成Fisher判别

    文章目录 一.算法描述 (1)W的确定 (2)阈值的确定 (3)Fisher线性判别的决策规则 二.数据描述 1.iris数据 2.sonar数据 三.鸢尾花数据集例子 四.python代码推导 1. ...

  8. python决策树 value_机器学习之ID3算法详解及python代码实现

    在生活中我们经常会用到决策树算法,最简单的就是二叉树了:相信大家也会又同样的困扰,手机经常收到各种短信,其中不乏很多垃圾短信.此时只要设置这类短信为垃圾短信手机就会自动进行屏蔽.减少被骚扰的次数,同时 ...

  9. ++代码实现 感知机的原理_决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

最新文章

  1. Quartz 2D基本图形的绘制
  2. 招聘 | 阿里巴巴搜索推荐事业部-知识图谱校招
  3. mysql connect 500_MySQL连接问题【mysql_connect和mysql_pconnect区别】
  4. windows服务器迁到_Windows Server 2008 R2 DNS 服务器迁移方法
  5. 在pandas中遍历DataFrame行
  6. java的io流的file类_java IO流 (一) File类的使用
  7. 【前端小小白】—每日5道面试题打卡(十五)
  8. JAVA 8:Lambdas表达式初体验
  9. python自学看什么书-如何自学Python ?自学看什么书比较好?
  10. mysql source超时_mysql数据库连接超时
  11. stringGrids 部分只读
  12. thinkpkp typecho maccms 全站加密不改动源码方法,多数php程序通用
  13. 高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;
  14. 达梦管理工具连接数据库服务器时提示:错误号 6001 网络通信异常
  15. webgl天空盒边界缝隙_基于webGL技术的3D库ThingJS支持天空盒技术实现
  16. 编译原理归纳学习——去除晦涩
  17. html5在线裁剪,html5 Canvas裁剪图片
  18. 区块链技术在物联网中的应用概述
  19. 3D打印机可以打印什么?
  20. python按日期爬取b站弹幕 2.0版

热门文章

  1. 如何用excel筛选相似内容_Excel中如何将两组数据的相同内容进行快速筛选配对...
  2. 深化对KMP算法的理解
  3. P1314 聪明的质监员(前缀和+二分)
  4. 物联网平台存量设备如何一键迁移企业版实例
  5. 关系型数据库,第一!
  6. 提升你的职场竞争力——“低代码开发师”来了!
  7. 【活动回顾】Edge X Kubernetes,探索云原生新边界
  8. 世纪联华的 Serverless 之路
  9. 从上千篇论文脱颖而出,支付宝论文凭什么获得WWW2020评委认可?
  10. Python打造一款多线程端口扫描器