决策树:ID3、C4.5、CART算法与Python实现

2023-12-31 17:48

本文主要是介绍决策树:ID3、C4.5、CART算法与Python实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、决策树的基本概念

决策树(Decision Tree)算法是一类常用的机器学习算法,在分类问题中,决策树算法通过样本中某一些属性的值,将样本划分到不同的类别中。
决策树跟人在做决策的思考方式很想像,先考虑重点选项,不符合则可最优先做出决策。

长得帅
不帅
才华横溢
会认字
教练级
小白
热爱
早鸭子
相亲对象
有才吗?
不去
喜欢羽毛球吗?
不去
喜欢游泳吗?
不去

1. 划分标准

在决定是否去见相亲对象时,该女提出了4个特征来做决策,这些特征在做决策的过程中是存在一定顺序的,首先选择了相貌,可能是因为她是外貌协会,这个通不过就不打算再考虑后续的特征了,决策性较强。
在决策树的算法中,通常用标准来确定特征的先后顺序:信息增益(Information Gain)、增益率(Gain Ratio)和基尼指数(Gini Index)。
首先介绍一下 熵(Entropy) 的概念,熵是度量样本集合纯度最常用的指标,对于包含m个训练样本的数据集:D{(X(1),y(1)),…,(X(m),y(m))}, 在数据集D中,第k类的样本所占的比例为pk,则数据集D的信息熵为:
E n t r o p y ( D ) = − ∑ k = 1 k p k   l o g 2   p k Entropy(D) =- \sum_{k=1}^k p_k\space log_2\space p_k Entropy(D)=k=1kpk log2 pk
其中,k表示数据集D中类别的个数,pk为类别k的数量占数据集总数量的比例。

假定有10个相亲对象,各特征值如下:

相关对象相貌才华羽毛球游泳是否去见
1会识字小白热爱不去
2不帅会识字教练级热爱不去
3不帅会识字小白早鸭子不去
4不帅才华横溢小白热爱不去
5不帅会识字小白热爱不去
6不帅会识字小白早鸭子不去
7才华横溢教练级热爱
8不帅会识字小白早鸭子不去
9不帅会识字小白热爱不去
10不帅会识字教练级早鸭子不去

以如上数据为例,其信息熵为:
E n t r o p y ( D ) = − ∑ k = 1 2 p k   l o g 2   p k = − ( 1 10 l o g 2 1 10 + 9 10 l o g 2 9 10 ) = 0.469 Entropy(D) =- \sum_{k=1}^2 p_k\space log_2\space p_k=-({1 \over 10} log_2{1 \over 10} + {9 \over 10} log_2{9 \over 10}) =0.469 Entropy(D)=k=12pk log2 pk=(10

这篇关于决策树:ID3、C4.5、CART算法与Python实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556742

相关文章

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

SpringMVC前后端传值的几种实现方式

《SpringMVC前后端传值的几种实现方式》本文主要介绍了SpringMVC前后端传值的方式实现,包括使用HttpServletRequest、HttpSession、Model和ModelAndV... 目录一、从Controller层到JSP界面1、使用HttpServletRequest的方式2、使

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运