Python 机器学习入门之C4.5决策树算法

news2024/11/27 12:53:14

系列文章目录

第一章 Python 机器学习入门之线性回归
第一章 Python 机器学习入门之梯度下降法
第一章 Python 机器学习入门之牛顿法
第二章 Python 机器学习入门之逻辑回归
番外 Python 机器学习入门之K近邻算法
番外 Python 机器学习入门之K-Means聚类算法
第三章 Python 机器学习入门之ID3决策树算法
第三章 Python 机器学习入门之C4.5决策树算法

C4.5决策树算法

  • 系列文章目录
  • 前言
  • 一、C4.5决策树详解
    • 1、简介
    • 2、连续特征值离散化
    • 3、处理缺失数据
    • 4、降低对类别不平衡敏感
    • 5、解决过拟合
  • 三、优缺点
  • 1、优点
  • 2、缺点

前言

之前说过ID3决策树算法存在的几个问题,而ID3的作者昆兰也在发布该算法不久后发现这些问题,于是提出了C4算法,后面有对C4升级变成了C4.5算法;而它之所以不叫ID4,ID5算法,是因为当时ID3算法发布后特别火,很多研究人员在ID3的基础上进行二次创新先提出了ID4、ID5算法,原作者就灵机一现,直接换了个新名称。

一、C4.5决策树详解

1、简介

从前言里面知道C4.5决策树的诞生就是为了解决之前ID3算法存在的问题,所以就直接说下它是如何解决问题的(注意一下,C4.5算法是在原有ID3算法基础上进行优化,虽然它可以解决特征值连续的问题,但是它仍然只用于分类问题上)。

在这里插入图片描述

2、连续特征值离散化

ID3决策树第一个问题,无法处理连续的特征值问题;假设样本里面某个特征F,它的取值为f1,f2,f3…,fn;C4.5算法会对依次取相邻两数的平均值,一共取得n-1个特征分类点;
将这些特征分类点假设作为样本的二元离散分类点,依次计算它们的信息增益,最后选取信息增益最大的特征划分点作为真正的二元离散分类点,这样就实现了连续特征值的离散化。

3、处理缺失数据

第二个问题,没办法对缺失数据进行处理;首先假设样本中某个特征F取值为f1、f2,先将二者的权重都设为1;然后查看样本中f1、f2特征无缺失样本,假设f1无缺失样本有3个,f2无缺失样本有7个,那么就将f1权重调整为3/10,f2权重调整为7/10;
因此样本特征值就是f1*3/10 和 f2 *7/10;后面计算信息增益和信息增益比使用该特征值计算即可。

4、降低对类别不平衡敏感

第三个问题:以信息增益作为划分训练数据集的特征时,存在于偏向于选择取值较多的特征的问题;就是分类结果容易被取值较多的特征影响;
因此引用信息增益比作为划分节点的标准,公式如下
在这里插入图片描述
由于特征越多的特征对应的**特征熵Ha(D)越大,则信息增益比Gr(D,A)**则会变小,因此可以校正信息增益容易偏向于取值较多的特征的问题。

5、解决过拟合

决策树一般采用剪枝的方法解决过拟合问题,而C4.5则引入了正则化系数进行初步的剪枝

三、优缺点

1、优点

  1. 易于理解和解释
  2. 学习能力强

2、缺点

  1. 只能用于分类问题
  2. 不稳定,C4.5在数据微小变化下可能生成不同的树结构,这意味着它的结果在某种程度上不够稳定
  3. 计算开销大,决策树的生成需要大量的熵值计算,并且如果特征值为连续值,还需要进行排序运算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于FPGA的图像拉普拉斯变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

GDB调试简单介绍

最近和许多同事交流时,发现好多人只是在IDE上debug,但是gdb却一点都不了解;校招新来的同事更是都没听过gdb这个工具,所以在培训时给他们培训了一下;另外好久也没写blog了,刚好把这篇笔记简单分享一下。 0 …

NetSuite SuiteWorld 2023观后感

25年!本周结束的SuiteWorld 2023是NetSuite的25周年庆。 下面两张照片分别来自1998年和今年。同样的人,同样的地点。左二是Evan,NetSuite的主要创始人。 当Evan展望未来25年后NetSuite这四位创始人的样子时。Evan GPT,给出了如下…

XIlinx提供的DDR3 IP与 UG586

DDR系统需要关注的三样东西:控制器、PHY、SDRAM颗粒,但这是实现一个DDR3 IP所需要的,如果只希望调用IP的话,则只需要调用IP即可,目前时间紧急,我先学一学如何使用IP,解决卡脖子的问题&#xff0…

Linux系统管理:虚拟机Kylin OS安装

目录 一、理论 1.Kylin OS 二、实验 1.虚拟机Kylin OS安装准备阶段 2.安装Kylin OS 3.进入系统 一、理论 1.Kylin OS (1)简介 麒麟操作系统(Kylin OS)亦称银河麒麟,是由中国国防科技大学、中软公司、联想公司…

Go-Python-Java-C-LeetCode高分解法-第十一周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 我搜集到了50道精选题,适合速成概览大部分常用算法 突…

SpringBoot 入门 参数接收

接口声明 RestController //表示该类为请求处理类public class HttpDeal {RequestMapping("/login")//这个方法处理哪一个地址过来的请求public String hello(){return "返回给浏览器";}}接收参数 RequestMapping("/login")public String logi…

Spring框架(四)

1、Spring6整合JUnit 1、JUnit4 User类: package com.songzhishu.spring.bean;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;/*** BelongsProject: Spring6* BelongsPackage: com.songzhishu.spring.bean*…

文档的重要性及接口文档模板

随着工作年限的增长,我们逐渐意识到工作中文档的重要性不可忽视。优质的文档不仅能提高工作效率,还能有效降低沟通成本,因此我们必须注重文档的撰写和格式。最近,由于未能及时更新文档,导致在项目开发中出现了信息冲突…

[Golang]多返回值函数、defer关键字、内置函数、变参函数、类成员函数、匿名函数

函数 文章目录 函数多返回值函数按值传递、按引用传递类成员函数改变外部变量变参函数defer和追踪说明一些常见操作实现 使用defer实现代码追踪记录函数的参数和返回值 常见的内置函数将函数作为参数闭包实例闭包将函数作为返回值 计算函数执行时间使用内存缓存来提升性能 参考…

在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统,刚好手里有块Lichee RV Dock 的板子,所以在学了基础的"hello, world"程序后,想着能不能把这个程序烧录到板子上,简单的做个实验。 要完成这个任务,需要将程序烧录到sd卡上…

文献阅读:The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A”

文献阅读:The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A” 1. 文章简介2. 实验 & 结果考察 1. finetune实验2. 真实知识问答 3. 结论 & 思考 文献链接:https://arxiv.org/abs/2309.12288 1. 文章简介 这篇文章是前…

FPGA设计FIR滤波器低通滤波器,代码及视频

名称:FIR滤波器低通滤波器 软件:Quartus 语言:Verilog/VHDL 本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。 代码功能: 设计一个8阶FIR滤波器(低通滤波器&#xff…

使用AI编写测试用例——详细教程

随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具&#xff…

关于Git的入门教程(附GitHub和Gitee的使用方法)

一. Git 概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习、占地面积小、性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCas…

基于DF模式的协作通信技术matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、DF概述 4.2、DF基本原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2013b 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd))…

【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )

文章目录 一、继承中的对象模型分析1、继承代码示例2、基类与派生类内存模型3、问题引入 - 派生类对象构造函数和析构函数调用4、完整代码示例 - 派生类对象内存模型 二、继承中的构造函数和析构函数1、子类构造函数与析构函数调用顺序2、子类构造函数参数列表3、代码示例 - 继…

项目经理之如何组建跨部门项目团队

在跨组织、跨部门、跨专业的临时性合作项目中,如何组建一个高效的跨部门项目团队是确保项目成功实施的关键。本篇幅将介绍如何组建一个成功的跨部门项目团队,包括明确项目目标与范围、确定项目组织模型、明确角色与职责、合理划分团队结构、制定沟通机制…

app分发的一些流程

应用分发的流程通常包括以下步骤: 开发应用程序:首先,您需要开发您的应用程序。这包括编写代码、设计用户界面、测试应用程序等等。确保您的应用程序符合各个应用商店的规范和要求,以确保顺利通过审核。 准备应用材料&#xff1a…

操作系统——吸烟者问题(王道视频p34、课本ch6)

1.问题分析:这个问题可以看作是 可以生产多种产品的 单生产者-多消费者问题 2.代码——这里就是由于同步信号量的初值都是1,所以没有使用mutex互斥信号, 总共4个同步信号量,其中一个是 finish信号量