【西瓜书】4.决策树

1 递归返回情况

        (1)结点包含样本全为同一类别

        (2)属性集为空,没有属性可供划分了

                或

                有属性,但是在属性上划分的结果都一样

        (3)结点为空结点

**结束时判定该结点的类别遵循如下规则:

        (1)若全为一个类别,则该结点为该类别,如全为“好瓜”,则该结点为好瓜

        (2)若某一个类别比其他类别多,则该结点为该类别,如结点中的样本“好瓜”>“坏瓜”,则该结点为好瓜。

        (3)若所有类别样本数一样,或为空集,则取其父节点的类别作为该结点的类别。

2.经典的属性划分方法
2.1.信息增益(选大)
  • 样本集信息熵,信息熵越小,则集合越纯,如果集合只属于1个类别,那么信息熵为0
  • 每个属性每个取值的信息熵,这些信息熵按比例相加
  • 每个属性信息增益,等于样本集信息熵减去该属性的加权信息熵
  • 信息熵Ent(D)越小,数据集D的纯度越高
  • 信息增益越大,则使用该属性来进行划分所获得的“纯度提升”越大
2.2.增益率(选大)
  • 信息增益对可取值数目较多的属性有所偏好,所以用增益率克服这一缺点
  • 选择增益率大的属性,即选择信息增益大分支少的属性
2.3.基尼指数(选小)
  • 反映了从D中随机抽取两个样本,其类别标记不一致的概率
  • Gini(D)越小,数据集D的纯度越高
3.剪枝处理

        划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限;而剪枝方法和程度对决策树泛化性能的影响更为显著。(也就是说选择剪枝方法比选基尼指数、信息增益还是增益率这种划分策略的影响更大)

        是对付“过拟合”的主要手段,剪枝的基本策略:

3.1.预剪枝
  1. 采用基于分层采样的留出法,初始认为所有样本都是好的,此时可计算模型的正确率为验证集中好瓜的比例。
  2. 运用一种属性划分方法选择出一个最好的属性进行划分,划分之后计算加了一层之后的正确率,并与未引入划分的正确率进行比较,若划分后的正确率>未划分就生成,否则不生成。


3.2.后剪枝

        先生成完整的决策树,再倒着看每棵子树是否有价值。如果剪枝后的树>未剪枝的树则剪枝,否则不剪,当正确率相等时不做操作,一方面是防止欠拟合,一方面是剪枝也会有一定的开销。

4.连续值处理 
  • 与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。也就是在某个点算出按密度<0.35和密度>0.35划分,后面在计算时还要把密度纳入考虑范围,且下次的划分点可能就不是0.35了。而别的离散属性比如颜色,如果用过就从属性集合中删去了。
  • 方法:二分法
5.缺失值处理
  • 样本赋权,权重划分 

单变量决策树

 

多变量决策树

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

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

相关文章

『哈哥赠书 - 54期』-『架构思维:从程序员到CTO』

文章目录 ⭐️ 架构思维&#xff1a;从程序员到CTO⭐️ 本书简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 不想成为架构师的程序员不是好CTO 在程序员的职业规划中&#xff0c;成为软件架构师是一个非常有吸引力的选择。但是对于如何才能成为一名架构师&#xff0c;不少同学认为只要代码…

python大作业:实现的简易股票简易系统(含源码、说明和运行截图)

实现一个简单的股票交易模拟系统。该系统将包括以下几个部分: 数据处理:从CSV文件中读取股票数据。 股票交易算法:实现一个简单的交易策略。 命令行界面(CLI):允许用户查看股票数据和进行交易。 数据持久化:将用户的交易记录和当前资金存储在数据库中。 为了简化这个示例…

uniadmin引入iconfont报错

当在uniadmin中引入iconfont后&#xff0c;出现错误&#xff1a; [plugin:vite:css] [postcss] Cannot find module ‘E:/UniAdmin/uniAdmin/static/fonts/iconfont.woff2?t1673083050786’ from ‘E:\UniAdmin\uniAdmin\static\fonts\iconfont.css’ 这是需要更改为绝对路径…

王炸级产品:字节跳动的Seed-TTS

在人工智能的快速发展中&#xff0c;文本到语音&#xff08;TTS&#xff09;技术已成为连接数字世界与人类沟通的重要桥梁。而字节跳动推出的Seed-TTS模型&#xff0c;无疑是这一领域的一个突破性进展&#xff0c;它以其卓越的性能和高度的自然度&#xff0c;被誉为TTS模型中的…

4句话学习-k8s节点是如何注册到k8s集群并且kubelet拿到k8s证书的

一、kubelet拿着CSR&#xff08;签名请求&#xff09;使用的是Bootstrap token 二、ControllerManager有一个组件叫CSRAppprovingController&#xff0c;专门来Watch有没有人来使用我这个api. 三、看到有人拿着Bootstrap token的CSR来签名请求了&#xff0c;CSRAppprovingContr…

排序---快速排序的4次优化

前言 个人小记 一、代码 #include<stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_ARR 10000000 #define SCOPE 16 #define swap(a,b)\ {\__typeof(a) __ca;\ab,b__c;\ } #define TEST(func,arr,l,r)\ {\printf(&…

父组件调用子组件方法(组合式 API版)

在 Vue 3 中&#xff0c;defineExpose 是一个用于在组合式 API (Composition API) 中暴露组件内部方法或属性的函数。它允许父组件通过 ref 引用子组件实例&#xff0c;并调用子组件暴露的方法或访问其属性。 以下是子组件和父组件如何使用 defineExpose 和 ref 的详细解释和示…

如何快速分析并将一个简单的前后端分离项目跑起来

一、前言 主要是前一段时间有小伙伴问我说自己刚入坑学后端不久&#xff0c;在开源网站上找了个简单的前后端分离项目&#xff0c;但是自己不会跑起来&#xff0c;让我给他说说&#xff0c;介于这玩意三两句话不是很好说清楚&#xff0c;而且不清楚那个小伙伴的知识到何种地步…

规则引擎LiteFlow发布v2.12.1版本,决策路由特性

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 简介 标题其实是不准确的&#xff0c;了解过的会知道在LiteFlow的2.12.0已经有了决策路由的特性&…

【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC,电压表

功能 读取P1.4电压&#xff0c;显示到口袋板显示屏&#xff0c;电压越高亮灯越多。 部分程序 while (1){ADC10CTL0 | ENC ADC10SC; // Sampling and conversion startLPM0;adcvalue ADC10MEM; //原始数据 0到1023adtest (float) adcvalue / 1024.…

【算法训练 day48 零钱兑换、完全平方数】

目录 一、零钱兑换-LeetCode 322思路实现代码问题总结 二、完全平方数-LeetCode 279思路实现代码问题总结 一、零钱兑换-LeetCode 322 Leecode链接: leetcode 322 文章链接: 代码随想录 视频链接: B站 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及…

每一个企业,都值得拥有自己专属的AI大模型!

前言 在数字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的科幻概念&#xff0c;而是成为了企业创新、转型、升级的必备工具。尤其是AI大模型&#xff0c;凭借其强大的数据处理能力和深度学习能力&#xff0c;正在为企业带来前所未有…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串序列判定(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串序列判定(100分) 🌍 评测功能需要订阅专栏后私信联系…

Leetcode:四数之和

题目链接&#xff1a;18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;排序 双指针&#xff09; 主旨&#xff1a;类似于三数之和的解法&#xff0c;但需要多加一些限制&#xff0c;同时为了防止多个数组元素的相加之和出现整型溢出问题还要将整型…

基于python可伸缩JSON格式列表实现

对于消息体为一个json格式列表&#xff0c;列表长度变化的代码设计&#xff0c;如下实现可供参考。 1、python语言实现(直接取值) #codingutf-8n 2 # 行项目数 productCode [11111,222222,333333] unit [H06,H07,H08] qty [6,7,8] items []for i in range(0, n):item …

数据分析每周挑战——心衰患者特征数据集

这是一篇关于医学数据的数据分析&#xff0c;但是这个数据集数据不是很多。 背景描述 本数据集包含了多个与心力衰竭相关的特征&#xff0c;用于分析和预测患者心力衰竭发作的风险。数据集涵盖了从40岁到95岁不等年龄的患者群体&#xff0c;提供了广泛的生理和生活方式指标&a…

spring事务实现原理

Spring事务的实现原理主要是基于AOP&#xff08;面向切面编程&#xff09; 事务的开启与提交/回滚 开启事务&#xff1a;当Spring容器中的AOP代理检测到一个匹配的切点方法被调用时&#xff0c;它会首先开启一个新的事务或者加入到现有的事务中&#xff08;这取决于事务传播行…

【读脑仪game】

读脑仪&#xff08;Brain-Computer Interface&#xff0c;BCI&#xff09;游戏是一种利用脑电信号来控制游戏的新型交互方式。这类游戏通常需要专业的硬件设备来读取用户的脑电信号&#xff0c;并将这些信号转化为游戏中的控制信号。编写这样的游戏代码涉及到多个方面&#xff…

瀚高数据库相关设置

瀚高数据库相关设置 一、配置瀚高数据库局域网访问 需要修改两个文件&#xff1a;postgresql.conf和pg_hba.conf 1&#xff09;在postgresql.conf中找到下述配置&#xff0c;把listen_addresses前面的注释去掉&#xff0c;值修改为* # - Connection Settings -#listen_addresse…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步&#xff08;一&#xff09;无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 &#xff08;二&#xff09;条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信&#xff08;一&#xff09;…