机器学习之 决策树(Decision Tree)

2023-11-07

机器学习算法系列

  1. 机器学习 之线性回归
  2. 机器学习 之逻辑回归及python实现
  3. 机器学习项目实战 交易数据异常检测
  4. 机器学习之 决策树(Decision Tree)
  5. 机器学习之 决策树(Decision Tree)python实现
  6. 机器学习之 PCA(主成分分析)
  7. 机器学习之 特征工程

这次,我们来看下决策树算法

决策树(Decision Tree)

决策树是一种常见的机器学习方法,它是从根节点开始,一步一步决策,直到走到叶子节点。
最终,所有的样本数据都会落到叶子节点,显然,决策过程的最终结论对应了我们所希望的判定结果 。
它即可以做分类问题,也可以做回归问题。

决策树组成

一般,一棵决策树包含一个根节点,若干个内部节点(非叶子节点)和若干个叶子节点。

  1. 根节点:第一个选择点
  2. 内部节点(非叶子节点):中间决策过程
  3. 叶子节点:最终的决策结果

决策树的训练流程

如何从给点定的训练集中去构造一棵决策树呢? 其实,决策树的构建就是一个递归过程,从根节点开始,根据选择的特征,将原始数据集切分为几个分支,然后依次遍历每个分支,在剩下的特征集中继续选择一个特征,进行对应划分,就是这个流程,一直递归下去,直到不可再分。
那么,什么情况下会不可再分呢?有三种情况:

  1. 当前节点包含的样本全属于同一类别,不需要再划分
  2. 当前属性集已为空,或者 当前节点中的所有样本在当前所剩属性集中取值相同,无法再分
  3. 当前节点包含的样本集为空,无法划分

具体的算法流程,这块贴下周志华大佬的《机器学习》中的一个图,大家可以看下

我们可以发现,上述算法中,最重要的一点,就是在每个节点上,选择最优的划分特征,也就说,每次在节点处划分时,我们都需要考虑,选择剩余特征集中的哪个属性进行划分,可以更好的划分数据呢?这个,也就是决策树算法的核心

决策树划分选择

通过上述,我们直到,决策树算法的核心是,如何选择最优的划分特征,我们希望随着划分的进行,我们经过每次划分后的分支节点所包含的样本尽可能的属于同一类别,也就是节点中所包含的样本纯度越来越高。从而,我们引入信息熵这个衡量标准

信息熵

信息熵表示的是随机变量不确定性的度量,熵越大,不确定性越强,也就是说纯度越低;
熵越小,不确定性越弱,纯度越高

设置样本集合D中总共有K类样本,其中第k类样本所占的比例为p_k(k=1,2,...,K),则D的信息熵定义为:

Ent(D) = -\sum_{k=1}^{K}p_k\,log_2 p_k

对于一个二分类问题,我们可以画出信息熵的图像看看

上述图像中,X轴表示正样本的概率,Y轴表示对应信息熵。可以看到,当概率为0.5时,对应信息熵最大,也就是说此时不确定度
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之 决策树(Decision Tree) 的相关文章

  • 如何实现 __eq__ 进行集合包含测试?

    我遇到了一个问题 我将一个实例添加到一个集合中 然后进行测试以查看该对象是否存在于该集合中 我已经覆盖了 eq 但在包含测试期间不会调用它 我必须覆盖吗 hash 反而 如果是这样 我将如何实施 hash 鉴于我需要对元组 列表和字典进行哈
  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • 最小二乘法拟合直线 python 代码

    我有一个由 X 和 Y 坐标组成的散点图 我想使用直线的最小二乘拟合来获得最佳拟合线 直线最小二乘拟合是指 如果 x 1 y 1 x n y n 是测量数据对 则最佳直线是y A Bx 这是我的Python代码 number of poin
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 如何使用 i18n 切换器将“LANGUAGE_CODE”保存到数据库,以便在 Django 中的不同浏览器中语言不会更改?

    有什么办法可以改变它的值LANGUAGE CODE单击按钮 发送请求 时 settings py 中的变量会动态变化吗 我希望用户设置自己的 默认语言 他们的帐户 现在 用户可以使用下拉列表选择他们的首选语言 并且网站会得到完美的翻译 并且
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 返回上个月的日期时间对象

    如果 timedelta 在它的构造函数中有一个月份参数就好了 那么最简单的方法是什么 EDIT 正如下面指出的那样 我并没有认真考虑这一点 我真正想要的是上个月的任何一天 因为最终我只会获取年份和月份 因此 给定一个日期时间对象 返回的最
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似

随机推荐

  • Day3: 前端路由(基础篇)

    目标 持续输出 每日分享关于web前端常见知识 面试题 性能优化 新技术等方面的内容 主要面向群体 前端开发工程师 初 中 高级 应届 转行 培训等同学 Day3 今日话题 想必大家经常会在面试中或者工作生活中听到 前端路由 相关的问题或者
  • Training a deep autoencoder or a classifier on MNIST digits_Rbm训练(Matlab)

    这是第一次阅读matlab版的RBM程序所做的笔记 其中有好多没有理解的地方 希望能跟各位博友一起学习 一起研究 一起讨论 共同进步 一 Rbm阅读材料 http en wikipedia org wiki Restricted Boltz
  • statsmodels 0.10.0中文文档

    为什么翻译 本人会计出身 转行数据分析 更多是用excel sql spss等工具 30岁开始入坑python 在学习statsmodels包的过程中 在知乎 百度 CSDN和github上均没有找到statsmodels的中文文档 一开始
  • 自然图像目标检测数据集汇总

    参考 自然图像目标检测数据集汇总 云 社区 腾讯云 目录 一 PASCAL VOC 1 Challenge and tasks 2 Dataset 3 Detection Ground Truth 4 Evaluation 二 ImageN
  • 测试离线音频转文本模型Whisper.net的基本用法

    微信公众号 dotNET跨平台 中的文章 OpenAI的离线音频转文本模型Whisper的 NET封装项目 介绍了基于 net封装的开源语音辨识Whisper神经网络项目Whisper net 其GitHub地址见参考文献2 本文基于Whi
  • springMvc 自定义注解以及自定义异常处理

    上一篇写到自定义错误处理 那么有这么个需求 如果每个模块需要错误处理页面不同 那么上面一篇写死为error jsp就不合理了 所以就需要我们想跳哪个错误页面就哪个页面 这样就灵活多了 我采用自定义注解的方式了指定我们需求跳转的错误页面 具体
  • 菜鸡刷题-1

    很久不刷题了 再次刷题手太生了 痛定思痛 还是继续刷吧 立帖为证 天天坚持 217 存在重复元素 给定一个整数数组 判断是否存在重复元素 如果存在一值在数组中出现至少两次 函数返回 true 如果数组中每个元素都不相同 则返回 false
  • 目标检测详解

    文章目录 前言 一 基本概念 目标检测的思路 边界框 锚框 交并比 loU 标注锚框 在训练数据中标注锚框 将真实边界框分配给锚框 标记类别和偏移量 使用非极大值抑制预测边界框 二 模型介绍 两阶段 R CNN Fast R CNN Fas
  • Spring Boot如何让自己的bean优先加载

    背景介绍 在一些需求中 可能存在某些场景 比如先加载自己的bean 然后自己的bean做一些DB操作 初始化配置问题 然后后面的bean基于这个配置文件 继续做其他的业务逻辑 因此有了本文的这个题目 实现方法 DependsOn注解 这个
  • word交叉引用——在正文中给参考文献做链接

    word交叉引用只需两步即可 3分钟即会 第一步 插入编号 文档中有如下参考文献 但还没有 1 2 3 等编号 那么先给参考文献编号序号 使用word gt 开始 gt 编号 接下来给参考文献标好序号 光标选到某参考文献前 点编号即可自动编
  • opencv-python实现去雾操作

    通过仿真自动色阶算法 发现其去雾效果十分明显 并且速度快于暗通道算法 python实现 python3 6 import numpy as np import cv2 def ComputeHist img h w img shape hi
  • LINUX下编译c++11的代码

    C 11 即ISO IEC 14882 2011 是目前的C 编程语言的最新正式标准 它取代了第二版标准 第一版公开于1998年 第二版于2003年更新 分别通称C 98以及C 03 两者差异很小 新的标准包含核心语言的新机能 而且扩展C
  • Ubuntu 18 系统中对openssl进安降级安装方法总结

    1 下载openssl 下载链接 https www openssl org source snapshot 里边是当前仍支持版本的快照 同版本不同日期内容可能不同的 所以下载一般下对应版本的最新快照 安装出错则尝试另一个快照 解压后的文件
  • qt中的菜单栏的隐藏功能

    有时候为了能让菜单栏中的部分功能进行隐藏 我们就需要在构造函数中进行操作 一般的控件隐藏可以直接hide 就行 然后菜单栏中的部分功能进行隐藏 就需要ui gt 菜单栏名称 gt menuAction gt setVisible false
  • 5G NR 网络切片是什么意思

    网络切片可以理解为支持特定使用场景或商业模式的通信服务要求的一组逻辑网络功能的集合 是基于物理基础设施对服务的实现 这些逻辑网络功能可以看作是由EPC下的网络功能 NetworkFuncTIon 分解而来的一系列子功能 Networksub
  • 线性代数—学习笔记

    对分类超平面方程
  • ubutun安装停留在界面

    这几天都在折腾 都在出问题记录一下 ubuntu安装时停留在界面 怎么办解决方法 重新开机 光标选中 Install Ubuntu 按 e 进入grub界面 将倒数第二行中的 quiet splash 改为 nomodeset F10保存
  • 比例谐振(PR)控制器的学习过程记录

    目录 0 前言 1 PR控制器和PI控制器对比 1 1 传递函数表达式对比 1 2 波特图对比 2 离散化预备知识 2 1 离散化表达式 2 2 离散化方法 2 3 离散化练习题 3 使用Matlab离散PR控制器 4 逆变器仿真模型中使用
  • STM32传感器外设集--语音识别模块(LD3320)

    目录 本节主要贴上以前写的语音识别外设LD3320 希望对大家有用 本人已经测试过有用 如何使用 将下面这段函数添加到功能函数中 LD3320 h LD3320 c 本节主要贴上以前写的语音识别外设LD3320 希望对大家有用 本人已经测试
  • 机器学习之 决策树(Decision Tree)

    机器学习算法系列 机器学习 之线性回归 机器学习 之逻辑回归及python实现 机器学习项目实战 交易数据异常检测 机器学习之 决策树 Decision Tree 机器学习之 决策树 Decision Tree python实现 机器学习之