决策树最优属性选择
本文以西瓜数据集为例演示决策树使用信息增益选择最优划分属性的过程

西瓜数据集下载:传送门
首先计算根节点的信息熵:
- 数据集分为好瓜、坏瓜,所以|y|=2
- 根结点包含17个训练样例,其中好瓜共计8个样例,所占比例为8/17
- 坏瓜共计9个样例,所占比例为9/17
将数据带入信息熵公式,即可得到根结点的信息熵:
E n t ( D ) = − ( 8 17 log 2 8 17 + 9 17 log 2 9 17 ) = 0.998 Ent(D)=-\left( \frac{8}{17}\log_2\frac{8}{17}+\frac{9}{17}\log_2\frac{9}{17} \right) =0.998 Ent(D)=−(178log2178+179log2179)=0.998
以属性色泽为例,其对应3个数据子集:
- D1(色泽=青绿),包含{1,4,6,10,13,17}共6个样例,其中好瓜样例为{1,4,6},比例为3/6,坏瓜样例为{10,13,17},比例为3/6。将数据带入信息熵计算公式即可得到该结点的信息熵:1.000
- D2(色泽=乌黑),包含{2,3,7,8,9,15}共6个样例,其中好瓜样例为{2,3,7,8},比例为4/6,坏瓜样例为{9,15},比例为2/6。将数据带入信息熵计算公式即可得到该结点的信息熵:0.918
- D1(色泽=浅白),包含{5,11,12,14,16}共5个样例,其中好瓜样例为{5},比例为1/5,坏瓜样例为{11,12,14,16},比例为4/5。将数据带入信息熵计算公式即可得到该结点的信息熵:0.722
则计算色泽属性的信息增益为:
G a i n ( D , 色泽 ) = E n t ( D ) − ∑ v = 1 3 ∣ D v ∣ ∣ D ∣ E n t ( D ) = 0.998 − ( 6 17 ∗ 1.000 + 6 17 ∗ 0.918 + 5 17 ∗ 0.722 ) = 0.109 Gain(D,色泽)=Ent(D)-\sum_{v=1}^{3}\frac{|D^v|}{|D|}Ent(D) \\ =0.998-\left( \frac{6}{17} * 1.000+\frac{6}{17}*0.918+\frac{5}{17}*0.722 \right) =0.109 Gain(D,色泽)=Ent(D)−v=1∑3∣D∣∣Dv∣Ent(D)=0.998−(176∗1.000+176∗0.918+175∗0.722)=0.109
同样的方法,计算其他属性的信息增益为:
G a i n ( D , 根蒂 ) = 0.143 G a i n ( D , 敲声 ) = 0.141 G a i n ( D , 纹理 ) = 0.381 G a i n ( D , 脐部 ) = 0.289 G a i n ( D , 触感 ) = 0.006 Gain(D,根蒂)=0.143 \\ Gain(D,敲声)=0.141 \\ Gain(D,纹理)=0.381 \\ Gain(D,脐部)=0.289 \\ Gain(D,触感)=0.006 \\ Gain(D,根蒂)=0.143Gain(D,敲声)=0.141Gain(D,纹理)=0.381Gain(D,脐部)=0.289Gain(D,触感)=0.006
对比不同属性,我们发现纹理属性的信息增益最大,因此,纹理属性被选为划分属性:清晰{1,2,3,4,5,6,8,10,15}、稍糊{7,9,13,14,17}、模糊{11,12,16}
下一步,我们再看纹理=清晰的节点分支,该节点包含的样例集合D1中有编号为{1,2,3,4,5,6,8,10,15}共计9个样例,此时可用属性集合为{色泽,根蒂,敲声,脐部,触感},纹理不会再作为划分属性,我们以同样的方式再计算各属性的信息增益为:
G a i n ( D , 色泽 ) = 0.043 G a i n ( D , 根蒂 ) = 0.458 G a i n ( D , 敲声 ) = 0.331 G a i n ( D , 脐部 ) = 0.458 G a i n ( D , 触感 ) = 0.458 Gain(D,色泽)=0.043 \\ Gain(D,根蒂)=0.458 \\ Gain(D,敲声)=0.331 \\ Gain(D,脐部)=0.458 \\ Gain(D,触感)=0.458 \\ Gain(D,色泽)=0.043Gain(D,根蒂)=0.458Gain(D,敲声)=0.331Gain(D,脐部)=0.458Gain(D,触感)=0.458
从上图可以看出根蒂、脐部、触感3个属性均取得了最大的信息增益,此时可任选其一作为划分属性。同理,对每个分支结点进行类似操作,即可得到最终的决策树
相关文章:
决策树最优属性选择
本文以西瓜数据集为例演示决策树使用信息增益选择最优划分属性的过程 西瓜数据集下载:传送门 首先计算根节点的信息熵: 数据集分为好瓜、坏瓜,所以|y|2根结点包含17个训练样例,其中好瓜共计8个样例,所占比例为8/17坏…...
NER 数据集格式转换
NER 数据集格式 格式一 某些地方的数据和标签拆成两个文件了 sentences.txt 如 何 解 决 足 球 界 长 期 存 在 的 诸 多 矛 盾 , 重 振 昔 日 津 门 足 球 的 雄 风 , 成 为 天 津 足 坛 上 下 内 外 到 处 议 论 的 话 题 。 该 县 一 手 抓 农 业…...
【LinuxC语言】utime函数
文章目录 前言函数原型参数`struct utimbuf`返回值示例代码总结前言 utime函数在C语言中用于更改文件的访问时间(access time, atime)和修改时间(modification time, mtime)。这是一个POSIX标准的函数,常用于更新文件的时间戳,而不必实际修改文件的内容。 函数原型 #in…...
Cannot invoke an object which is possibly ‘undefined‘
这是ts中的错误提示: Cannot invoke an object which is possibly undefined 报错场景: 定义interface接口的时候sayHi方法使用的是可选属性,可以有可以没有, 当在实际方法中调用sayHi方法的时候报错了, 问ÿ…...
C++ 计时器
文章目录 一、简介二、实现代码2.1 windows平台2.2 C标准库 三、实现效果 一、简介 有时候总是会用到一些计时的操作,这里也整理了一些代码,包括C标准库以及window自带的时间计算函数。 二、实现代码 2.1 windows平台 StopWatch.h #ifndef STOP_WATCH_H…...
notepad++ 批量转所有文件编码格式为UTF-8
1、安装notepad及PythonScript_3.0.18.0插件 建议两者都保持默认路径安装x64版本: 阿里云盘分享https://www.alipan.com/s/xVUDpY8v5QL安装好后如下图: 2、new Script,新建脚本,文件名为ConvertEncoding 3、自动打开脚本ÿ…...
正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-16讲 EPIT定时器
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...
【只会for循环? 来看下, Nodejs中典型的5种循环方式】
Nodejs中的,除了经典的for循环 , 其实还有几种好用的循环方式, 并有典型的使用场景。下面来一起看下👇🏻 5种循环用法 For Loop:这是最常见的循环方式,适用于你知道循环次数的情况。 for (let i 0; i &…...
Java基础(三)- 多线程、网络通信、单元测试、反射、注解、动态代理
多线程基础 线程:一个程序内部的一条执行流程,只有一条执行流程就是单线程 java.lang.Thread代表线程 主线程退出,子线程存在,进程不会退出 可以使用jconsole查看 创建线程 有多个方法可以创建线程 继承Thread类 优点&#x…...
WordPress建站公司模板免费下载
WordPress建站公司 适合提供WordPress建站服务的公司或个体(个人)工作室使用的WordPress建站公司主题模板。 演示 https://www.jianzhanpress.com/?p545 https://www.wpicu.com/jianzhan/ 下载 链接: https://pan.baidu.com/s/11trlwUJq_lW81R_acq4ilA 提取码: r19i...
金融信贷风控基础知识
一、所谓风控(What && Why) 所谓风控,可以拆解从2个方面看,即 风险和控制 风险(what) 风险 这里狭隘的特指互联网产品中存在的风险点,例如 账户风险 垃圾注册账号账号被泄露盗用 交易支付风险 刷单:为提升卖家店铺人气…...
Web Server项目实战4-服务器编程基本框架和2种高效的事件处理模式
服务器编程基本框架 虽然服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理 模块功能I/O处理单元处理客户连接,读写网络数据逻辑单元业务进程或线程网络存储单元数据库、文件或缓存请求队列各单元之间的通信方式 I/O 处理单元是…...
。。。。。
...
RPC原理技术
RPC原理技术 背景介绍起源组件实现工作原理 背景 本文内容大多基于网上其他参考文章及资料整理后所得,并非原创,目的是为了需要时方便查看。 介绍 RPC,Remote Procedure Call,远程过程调用,允许像调用本地方法一样调…...
开源大模型与闭源大模型:技术哲学的较量
目录 前言一、 开源大模型的优势1. 社区支持与合作1.1 全球协作网络1.2 快速迭代与创新1.3 共享最佳实践 2. 透明性与可信赖性2.1 审计与验证2.2 减少偏见与错误2.3 安全性提升 3. 低成本与易访问性3.1 降低研发成本3.2 易于定制化3.3 教育资源丰富 4. 促进标准化5. 推动技术进…...
buuctf的RSA(二)
1.RSA 知道 flag.enc 和 pub.key,典型的加密、解密 将pub,key 改为pub.txt 打开后发现公钥 在RSA公私钥分解 Exponent、Modulus,Rsa公私钥指数、系数(模数)分解--查错网 进行解密 得到e65537 n8693448229604811919066606200349480058890565…...
idm软件是做什么的 IDM是啥软件 idm软件怎么下载 idm软件怎么下载
一、IDM是啥软件 IDM 是由美国 Tonec 公司开发的 Windows 软件,该软件最初于 2005 年发布。IDM全称Internet Download Manager,是一款Windows平台老牌而功能强大的下载加速器,专注于互联网数据下载。这款软件是一款不错的轻量级下载工具&…...
基于springboot+vue的学生考勤管理系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
Java——内部类
1.什么是内部类 在一个类的里面再定义一个类,新定义的这个类就是内部类 举例:在Outer类的里面定义一个Inter类 class Outer{class Inter{} } 在这里Outer叫外部类,Inter叫内部类 内部类的应用场景 定义一个汽车类: 属性…...
不用从头训练,通过知识融合创建强大的统一模型
在自然语言处理(NLP)领域,大型语言模型(LLMs)的开发和训练是一个复杂且成本高昂的过程。数据需求是一个主要问题,因为训练这些模型需要大量的标注数据来保证其准确性和泛化能力;计算资源也是一个…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
