Python 机器学习入门之ID3决策树算法

系列文章目录

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

ID3决策树算法

  • 系列文章目录
  • 前言
  • 一、ID3决策树简介
    • 1、定义
    • 2、例子
    • 3、原理
  • 二、ID3决策树详解
    • 1、前置条件
    • 2、计算信息增益
  • 三、优缺点
  • 1、优点
  • 2、缺点

前言

开始新的一章,这章主要介绍决策树(decision tree)算法,它是一种常用的分类和回归方法,同时在它的基础上还演化出了随机森林、XgBoost等算法;这篇文章说说最早的决策树算法ID3决策树

一、ID3决策树简介

1、定义

百科定义:
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。

没有找到单独给ID3决策树的定义,所以就先用下决策树的普遍定义;决策树简单来说就是我们经常在代码里面写的if…else if…esle if…这样的情况

2、例子

光说理论可能不太懂,我们举个例子看看,我们经常听到这瓜保熟吗这个梗,这是出自电视剧《征服》里面的一幕名场面,那我们就看看瓜熟不熟需要什么条件呢
在这里插入图片描述
本人爱吃西瓜,不太会选西瓜,就会这两三把式,让大家见笑了;首先我们可以根据拍打西瓜时候的声音沉不沉重,来看是不是熟瓜;如果是当当的清脆声那就是生瓜,如果声音沉重一般就是熟瓜;其次就看看瓜藤卷不卷,瓜藤卷到一定程度基本上就可以判定是熟瓜了;当然判断条件肯定不止这两个,其余条件有懂的朋友可以在下面评论让我学习学习哈

在这里插入图片描述

3、原理

从上面的例子中我们基本可以理解了决策树的原理,那我们现在就来说说ID3决策树,上面的例子提到了两个判断条件(瓜声和瓜藤),但是哪个放前面判断,哪个放后面判断呢?
这时候一位大佬昆兰使用信息论上的熵这个概念(该概念是由香农提出)进行思考,并在此基础上使用信息增益这个概念构建了决策树决策的过程

  1. 从根节点开始,计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的划分特征;
  2. 由该特征的不同取值建立子节点;
  3. 再对子节点递归1-2步,构建决策树;
  4. 直到没有特征可以选择或类别完全相同为止,得到最终的决策树

二、ID3决策树详解

1、前置条件

之前说到了熵和信息增益这两个概念,这块后面单独出一篇文章说下,我们当前只要需要明确两个概念,可以用来度量条件的不确定性信息增益则是减少不确定的程度,所以我们每次优先挑选信息增益最大的特征确保接下来的特征分类结果更准确。

这里顺口提一句,由于该性质一般来说ID3决策树通常只用于分类,几乎不用于回归;网上资料中常提到决策树可用于回归和分类问题,那一般指的是C4.5算法和CART分类回归树,ID3可以说是不支持回归问题的。

2、计算信息增益

流程在上述原理中已经提过,这里就谈谈如何计算信息增益

  1. 假定样本集合D中第i类样本所占的比例为Pi,求它的信息熵在这里插入图片描述
  2. 求离散特征a对数据集D的条件信息熵
    在这里插入图片描述
  3. 计算信息增益
    在这里插入图片描述

三、优缺点

1、优点

  1. 简单理解
  2. 处理分类问题
  3. 低计算复杂度

2、缺点

  1. 处理连续型特征困难
  2. 容易过拟合
  3. 处理缺失数据困难
  4. 对类别不平衡敏感
  5. 不支持剪枝

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

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

相关文章

python知识:从PDF 提取文本

一、说明 PDF 到文本提取是自然语言处理和数据分析中的一项基本任务,它允许研究人员和数据分析师从 PDF 文件中包含的非结构化文本数据中获得见解。Python 是一种通用且广泛使用的编程语言,它提供了多个库和工具来促进提取过程。 二、各种PDF操作库 让我…

Vue+openlayers+projs4实现坐标转换

一、背景 有一堆点数据,需要在地图上标记,只知参考北京54坐标系或西安80坐标系,但具体是哪种不清楚,这时候就需要坐标转换。ps:EPSG:3857(openlayers参照的坐标系) 二、思路 1、研…

Jmeter接口测试:jmeter导入和导出接口的处理

JMeter测试导入接口 利用Jmeter测试上传文件,首先可根据接口文档或者fiddler抓包分析文件上传的接口;如下图: 以下是我通过fiddler所截取的文件上传的接口 1、填写导入接口的信息 查看文件上传栏下的填写信息: 文件名称&#x…

大数据Flink(九十九):SQL 函数的解析顺序和系统内置函数

文章目录 SQL 函数的解析顺序和系统内置函数 一、​​​​​​​SQL 函数

Nginx集群负载均衡配置完整流程

今天,良哥带你来做一个nginx集群的负载均衡配置的完整流程。 一、准备工作 本次搭建的操作系统环境是win11,linux可配置类同。 1)首先,下载nginx。 下载地址为:http://nginx.org/en/download.html 良哥下载的是&am…

Vue生命周期钩子

vue生命周期表示在组件创建后的一系列变化,其中钩子函数会在生命周期的关键节点中被调用 为什么在beforeCreated()时,data和methods方法还没有创建,但是在beforeCreated()里面打印this可以看到data相关的数据? 跟浏览器有关&…

k8s-14 存储之volumes

Volumes配置管理 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失因为容器会以干净的状态重建。其次,当在一个 Pod 中…

手机有什么爬虫App工具?

随着智能手机的普及和应用的繁盛,越来越多的人开始对手机App进行数据爬取和分析。那么,在进行手机App爬虫的过程中,我们可以借助哪些工具呢?让我们一起来了解一下吧! 1、Fiddler Fiddler是一款功能强大的网络调试工具…

公司电脑监控软件|管控企业U盘,防止员工利用U盘泄密

德人合科技——电脑监控软件可以通过U盘管理系统管控企业U盘,防止员工利用U盘泄密。 PC访问地址:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 其具体功能如下: U盘接入管控:单位内电脑能否使用U…

Harbor 安装部署

Harbor基本介绍 1、Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,Harbor 是一个企业级的 Docker 私有仓库项目。 2、Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/L…

ETX很小

windows桌面调节分辨率即可:

shopee平台现在好做吗

Shopee 是一家知名的电子商务平台,特别在东南亚地区非常流行。是否在 Shopee 平台做生意是否好做取决于多种因素,包括你的产品、市场竞争、营销策略和运营能力等。 以下是一些考虑因素: 1、产品选择:选择畅销的产品或具有市场需求…

Linux使用rpm包安装mysql5.7

以前安装过mysql 前言:检查以前是否装有mysql rpm -qa|grep -i mysql安装了会显示:   bt-mysql57-5.7.31-1.el7.x86_64 停止mysql服务和删除之前安装的mysql rpm -e bt-mysql57-5.7.31-1.el7.x86_64查找并删除mysql相关目录 find / -name mysql/va…

教育课堂小程序,三分钟打造专属小程序 带完整搭建教程

大家好哇,今天来给大家分享一款教育课堂小程序。现如今,线上教育已经普及,在大学课堂里,老师尝尝是使用各种各样的学习APP进行点名,签到,答题,考试等等,相较于传统的APP来说&#xf…

oracle11g安装图解

软件需求 1.安装CentOS6.5的服务器一台 2.Oracle 11g 安装介质: linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 3.命令行客户端工具xshell、crt或者putty 4.图形界面客户端工具Xming 系统配置检查 1.内存检查 grep MemTotal /proc/m…

dubbogo-1 基础rpc服务

文章目录 基本环境处理编译pb接口开启rpc调用业务观察qa1 能取出protoc里面的字段值吗? 基本环境处理 https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/ 这里没有 protoc-gen-go --version 执行 go get -u github.com/golang/protobuf/protoc…

竞赛选题 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

Windows 事件日志监控

Windows 事件日志是记录 Microsoft 系统上发生的所有活动的文件,在 Windows 环境中,将记录系统上托管的系统、安全性和应用程序的事件,事件日志提供包含有关事件的详细信息,包括日期、时间、事件 ID、源、事件类型和发起它的用户。…

拭目以待!万博智云亮相2023长沙·中国1024程序员节

2023年10月23 - 25日,第四届“长沙中国 1024 程序员节”将在中国长沙盛大举行,万博智云 OneProCloud将以大会钻石合作伙伴身份重磅亮相,CEO Michael将发表主题演讲。这也是万博智云首次成为长沙中国 1024 程序员节合作伙伴。 1.主题演讲 万博…

Qt/C++开源作品45-CPU内存显示控件/和任务管理器一致

一、前言 在很多软件上,会在某个部位显示一个部件,专门显示当前的CPU使用率以及内存占用,方便用户判断当前程序或者当前环境中是否还有剩余的CPU和内存留给程序使用,在不用打开任务管理器或者资源查看器的时候直接得知当前系统的…