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

2023-10-22 08:12

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

系列文章目录

第一章 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. 计算开销大,决策树的生成需要大量的熵值计算,并且如果特征值为连续值,还需要进行排序运算

这篇关于Python 机器学习入门之C4.5决策树算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.