ID3算法详解:构建决策树的利器

news2024/11/15 15:35:50

目录

引言

ID3算法概述

算法基础

信息熵

​编辑

信息增益

ID3算法步骤

决策树

概念:

核心:

节点

1. 根节点

2. 非叶子节点

3. 叶子节点


引言

在机器学习领域,决策树是一种非常流行的分类和回归方法。其中,ID3算法作为决策树算法中的经典之作,自其提出以来就备受关注。本文将详细介绍ID3算法的原理、步骤、应用以及优缺点,帮助读者深入理解这一强大的分类工具。

ID3算法概述

ID3算法(Iterative Dichotomiser 3)是由澳大利亚计算机科学家Ross Quinlan在1986年提出的一种决策树学习算法。它基于信息论中的熵和信息增益的概念,通过递归地选择最佳属性来划分数据集,从而构建决策树。ID3算法的核心思想是通过选择最能降低数据不确定性的属性来进行划分,直到所有数据都属于同一类别。

算法基础

信息熵

信息熵是度量数据集中不确定性的一个指标,其值越大,表示数据集的不确定性越高,数据集的混乱程度越高。对于具有n个类别的数据集U,其信息熵H(U)可以定义为:

其中,pi​是U中第i个类别出现的概率。

例:

信息增益

信息增益是衡量某个属性对数据集分类能力的一个指标。对于数据集D和属性A,A的信息增益Gain(U,A)可以定义为:

Gain(U,A)=H(U)−∑v∈V​∣U∣∣Uv​∣​H(Uv​)

其中,V是属性A的所有可能值,Uv​是D中在属性A上取值为v的子集。

ID3算法步骤

  1. 计算信息熵:首先计算整个数据集D的信息熵H(D)。
  2. 计算信息增益:对于每个属性A,计算其信息增益Gain(D,A)。
  3. 选择最佳属性:选择信息增益最大的属性作为当前节点的分裂属性。
  4. 划分数据集:根据选定的属性A的不同取值,将数据集D划分为若干个子集。
  5. 递归构建决策树:对每个子集递归地执行步骤1-4,直到满足停止条件(如所有实例属于同一类别或没有更多属性可供划分)。

决策树

概念:


决策树通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数据进行分类预测,属于有监督学习。

核心:


所有数据从根节点一步一步落到叶子节点。

节点

1. 根节点
  • 定义:决策树的根节点是整棵树的起点,也是第一个进行特征判断的节点。它代表了决策过程的开始,是后续所有分支和节点的基础。
  • 作用:根节点根据训练数据集中最具分类能力的特征进行划分,从而引导数据流向不同的子节点。
2. 非叶子节点
  • 定义:非叶子节点是决策树中除了根节点和叶子节点以外的所有节点。它们位于根节点和叶子节点之间,每个非叶子节点都代表了一个特征判断或决策规则。
  • 特点
    • 入边与出边:非叶子节点通常有一条入边(来自其父节点)和两条或多条出边(指向其子节点)。这些边代表了特征的不同取值或决策结果的不同方向。
    • 决策规则:每个非叶子节点都包含对某个特征的测试条件,用于将数据集分割成更小的子集。这些决策规则是由已知数据集计算而得的,旨在减少数据集的不确定性。
  • 作用:非叶子节点通过不断的特征判断和决策规则应用,逐步将数据集细化,为最终的分类或回归结果奠定基础。
3. 叶子节点
  • 定义:叶子节点是决策树中的末端节点,表示分类或回归的最终结果。在分类问题中,每个叶子节点都对应一个类别标签;在回归问题中,每个叶子节点则对应一个具体的数值预测。
  • 特点
    • 无出边:叶子节点只有一条入边(来自其父节点),没有出边。这意味着叶子节点是决策过程的终点,不再进行进一步的特征判断或决策规则应用。
    • 分类或回归结果:每个叶子节点都包含了一个明确的分类或回归结果,这是决策树对输入数据的最终预测。
  • 生成条件:叶子节点的生成通常基于两个条件:一是无法进一步分割数据集(即所有样本都属于同一类别或具有相同的特征值);二是达到了预设的停止条件(如节点中的样本数小于某个阈值、树的深度达到了预设的最大值等)。

综上所述,决策树的根节点、非叶子节点和叶子节点共同构成了决策树的结构,通过不断的特征判断和决策规则应用,实现了对输入数据的分类或回归预测。

import pandas as pd
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt

# 假设的数据集(从图片中猜测的)
data = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 'sunny', 'sunny', 'rainy', 'sunny',
                'overcast', 'overcast', 'rainy'],
    'Temperature': ['hot', 'hot', 'hot', 'mild', 'cool', 'cool', 'cool', 'mild', 'cool', 'mild', 'mild', 'mild', 'hot',
                    'mild'],
    'Humidity': ['high', 'high', 'high', 'high', 'normal', 'normal', 'normal', 'high', 'normal', 'normal', 'normal',
                 'high', 'normal', 'high'],
    'Wind': ['weak', 'strong', 'weak', 'weak', 'weak', 'strong', 'strong', 'weak', 'weak', 'weak', 'strong', 'strong',
             'weak', 'strong'],
    'PlayTennis': ['no', 'no', 'yes', 'yes', 'yes', 'no', 'yes', 'no', 'yes', 'yes', 'yes', 'yes', 'yes', 'no']
}

# 将数据转换为DataFrame
df = pd.DataFrame(data)

# 将类别数据转换为数值型数据(scikit-learn要求)
df = pd.get_dummies(df, drop_first=True)  # 使用one-hot编码

# 分离特征和标签
X = df.drop('PlayTennis_yes', axis=1)
y = df['PlayTennis_yes']

# 创建决策树模型
clf = DecisionTreeClassifier(criterion='entropy')  # 使用熵作为分裂标准,类似于ID3的信息增益
clf.fit(X, y)

# 绘制决策树
plt.figure(figsize=(20, 10))
plot_tree(clf, filled=True, feature_names=X.columns, class_names=['no', 'yes'])
plt.show()

运行结果:

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

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

相关文章

干货分享 | TSMaster—RP1210模块使用指南

RP1210是由技术和维护委员会(TMC)编写的一种建议性实践。RP1210用于对重型车辆射频相关的(主要针对)电子控制单元(ECU)进行二次编程和分析。本文主要针对TSMaster—RP1210模块的操作进行详细介绍。 本文关…

【CANoe使用大全】——在线回放数据

🙋‍♂️【CANoe使用大全】系列💁‍♂️点击跳转 文章目录 1.概述2.创建回灌节点3.加载回灌数据 1.概述 在外面测试过程中经常会遇到一些故障场景,需要采集这些时刻的故障场景log, 回灌到程序中复现问题。 下面主要介绍数据的在…

【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?

IPC-A-610标准对每个级别产品均给出四种验收条件:目标、可接受、缺陷或制程警示条件。 目标条件 是指近乎完美/首选的情形,然而这是一种理想而非总能达到的情形,且对于保证组件在使用环境下的可靠性并非必要的情形。 比如4.3.2节中连接器插针…

R8;RRRRRRRR;穿膜肽R8;八聚精氨酸;148796-86-5

【穿膜肽R8简介】 穿膜肽R8,也称为八聚精氨酸(Octa-arginine),是一种由八个精氨酸残基组成的细胞穿透肽(CPP)。R8具有正电荷丰富的侧链,能够有效地与细胞膜上的负电荷相互作用,从而促…

优化电商客服满意度与复盘管理:AI质检技术的深度应用与策略

Hi~这里是ProXiao 文章参考:晓观点 《如何利用AI质检提升电商客服满意度,优化分析复盘管理环节?》 在当前电子商务迅猛发展的背景下,客户服务质量作为衡量店铺综合竞争力的重要指标之一,其优劣直接关联到服务类数据评分…

Docker图形化管理工具DockerUI

1、DockerUI 轻量级图形页面管理之DockerUI 2、查看dockerui镜像 [rootlocalhost ~]# docker search dockerui 3、下载dockerui镜像 [rootlocalhost ~]# docker pull abh1nav/dockerui #选择喜欢的dockerui风格镜像下载 4、启动dockerui容器 [rootlocalhost ~]# docker r…

Python经典书籍有哪些?来看看你看过哪几本

Python 基础 1.《Python编程:从入门到实践(第2版)》 本书是针对所有层次Python读者而作的Python入门书,让你可以快速学会Python编程,通过这本书,你将会学到各种Python库和工具(NumPy,Pygal等)…

C/C++控制台贪吃蛇游戏的实现

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…

(第三期)书生大模型实战营——OpenXLab部署InternLM2实践——上传模型

OpenXLab 部署 InternLM2 实践指南 上传模型 初始化git设置 # install git sudo apt-get update sudo apt-get install git# install git lfs sudo apt-get update sudo apt-get install git-lfs# use git install lfs git lfs installOpenXLab 使用你在平台的用户名作为 Git…

【初阶数据结构】算法复杂度

目录 一、算法效率 1.1 为什么要衡量算法的好坏 1.2 算法的复杂度 1.3 复杂度在校招中的考察 二、时间复杂度 2.1 时间复杂度的概念 Func1 执行的基本操作次数 : 2.2 大O的渐进表示法 常见复杂度对比 一般算法常见的复杂度如下: ​编辑 2.3常…

SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧

SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧 SearXNG 是一个免费的互联网元搜索引擎,整合了各种搜索服务的结果。用户不会被跟踪,也不会被分析。 github地址:https://github.com/searxng/searxng 项目地址:https://docs.searxng.org/ 公…

尚品汇-网关过滤用户请求、登录流程(三十五)

目录: (1)用户认证与服务网关整合 (2)server-gateway网关配置 (3)在服务网关中判断用户登录状态 (4)登录流程 (1)用户认证与服务网关整合 实…

一对一私密发送分班结果,就用易查分

暑假即将结束,老师们又要开始忙碌起来,其中一项重要任务就是搭建一个分班信息查询系统。对于家长和学生来说,简直就是神器,因为它能提供快速便捷的查询服务。 想象一下,家长和学生通过扫描二维码,就能轻松…

【鸿蒙学习】HarmonyOS应用开发者基础 - 认证通过

考试时间:2024-08-20 22:00 考试结果:成功(99分) 一、开局叨叨 HarmonyOS应用开发者基础认证,不完美通过,考试分数99分,为啥不考100分。主要是当时没找到,后面通过录屏看了一下&am…

2024“华为杯”第二十一届中国研究生数学建模竞赛2004-2023华为杯数学建模优秀论文(见文末)

2024“华为杯”第二十一届中国研究生数学建模竞赛&2004-2023华为杯数学建模优秀论文(见文末) 各研究生培养单位: 中国研究生数学建模竞赛(以下简称“竞赛”)是教育部学位管理与研究生教育司指导,中国学…

TUIKit:chat-uikit-vue在微信中上传图片的一个bug

一、问题描述 今天使用腾讯IM的TUIKIT示例工程:https://github.com/TencentCloud/chat-uikit-vue.git ,发现在Android设备的微信里打开,选择相册的图片进行编辑后发送会失败: 二、问题排查 由于在微信中不好排查问题&#xff…

docker 安装minio并配置https域名访问

一、准备目录 mkdir -p /home/minio/data/home/minio/config/home/minio/config/certs/二、下载域名证书,注意要Apache的 注意.key的换成 private.key,public.crt换成 public.crt,然后将这两个文件放到/home/minio/config/certs/目录下 三、…

微信小程序开发工具最新版版下载

最近,下载微信小程序开发工具的时候,因为网络问题,发现不能够直接下载,需要使用代理才行 如果你也遇到这个问题,可以通过网盘进行下载。 一、官网下载 下载地址:https://developers.weixin.qq.com/miniprog…

DC-1综合靶场渗透从外网打到内网,权限提升,入侵痕迹清除,干货,建议收藏

前言 博客主页:【h0ck1r丶羽】的公众号~~ 由于传播、利用本公众小羽网安提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号小羽网安及作者不为此承担任何责任,一旦造成后果请自行承担&#xff01…

Jmeter进行http接口测试,这一篇就搞定

jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤(1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值) 针对接口添加heade…