iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于决策树算法的Python示例分析
  • 619
分享到

关于决策树算法的Python示例分析

2023-06-02 05:06:12 619人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关关于决策树算法的python示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一. 概述前面的一篇Python学习教程有跟大家介绍了决策树的一些基

本篇文章给大家分享的是有关关于决策树算法python示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一. 概述

前面的一篇Python学习教程有跟大家介绍了决策树的一些基本概念,包括树的基本知识以及信息熵的相关内容,那么这次,我们就通过一个例子,来具体展示决策树的工作原理,以及信息熵在其中承担的角色。

有一点得先说一下,决策树在优化过程中,有3个经典的算法,分别是ID3,C4.5,和CART。后面的算法都是基于前面算法的一些不足进行改进的,我们这次的Python学习教程就先跟大家讲ID3算法,后面会再说说它的不足与改进。

二. 一个例子

众所周知,早上要不要赖床是一个很深刻的问题。它取决于多个变量,我每天早上起床都在想今天能不能找个什么理由不上班啊~哈哈哈,下面就让我们看看小明的赖床习惯吧。

关于决策树算法的Python示例分析

这里我们随机抽了一年中14天小明的赖床情况。现在我们可以根据这些数据来构建一颗决策树。

可以发现,数据中有三个属性会影响到最终的结果,分别是,季节,时间是否过8点,风力情况。

关于决策树算法的Python示例分析

要构建一颗决策树,首先我们要找到它的根,按照上一节所说,我们需要计算每一个属性的信息熵。

在计算每一个属性的信息熵之前,我们需要先根据历史数据,计算没有任何属性影响下的赖床信息熵。从数据我们可以知道,14天中,有赖床为8天,不赖床为6天。则

p(赖床) = 8 / 12.

p(不赖床) = 6 / 12.

信息熵为

H(赖床) = -(p(赖床) * log(p(赖床)) + p(不赖床) * log(p(不赖床))) = 0.89

接下来就可以来计算每个属性的信息熵了,这里有三个属性,即季节,是否过早上8点,风力情况,我们需要计算三个属性的每个属性在不同情况下,赖床和不赖床的概率,以及熵值。

说得有点绕,我们先以风力情况这一属性来计算它的信息熵是多少,风力情况有三种,我们分别计算三种情况下的熵值。

关于决策树算法的Python示例分析

风力情况为 breeze 时,有 4 / 5 的概率会赖床,而 1 / 5 的概率不会赖床,它的熵为 entropy(breeze) = -(p(breeze,赖床) * log(p(breeze,赖床)) + p(breeze,不赖床) * log(p(breeze,不赖床))) 0.722。

风力情况为 no wind 时,和上面一样的计算,熵值为 entropy(no wind) = 0.811

风力情况为 gale 时,熵值为 entropy(gale) = 0.918

最终,风力情况这一属性的熵值为其对应各个值的熵值乘以这些值对应频率。

H(风力情况) = 5/12 * entropy(breeze) + 4/12 * entropy(no wind) + 3/12 * entropy(gale) = 0.801

还记得吗,一开始什么属性没有,赖床的熵是H(赖床)=0.89。现在加入风力情况这一属性后,赖床的熵下降到了0.801。这说明信息变得更加清晰,我们的分类效果越来越好。

关于决策树算法的Python示例分析

以同样的计算方式,我们可以求出另外两个属性的信息熵:

H(季节) = 0.56

H(是否过 8 点) = 0.748

通过它们的信息熵,我们可以计算出每个属性的信息增益。没错,这里又出现一个新名词,信息增益。不过它不难理解,信息增益就是拿上一步的信息熵(这里就是最原始赖床情况的信息熵)减去选定属性的信息熵,即

信息增益 g(季节) = H(赖床) - H(季节) = 0.33

这样我们就能计算每个属性的信息增益,然后选取信息增益最大的那个作为根节点就行了,在这个例子中,很明显,信息增益最大的是季节这个属性。

选完根节点怎么办?把每个节点当作一颗新的树,挑选剩下的属性,重复上面的步骤就可以啦。

关于决策树算法的Python示例分析

当全部都遍历完之后,一颗完整的树也就构建出来了,这个例子中,我们最终构造的树会是这个样子的:

关于决策树算法的Python示例分析

三. 过拟合与剪枝

在构建决策树的时候,我们的期望是构建一颗最矮的决策树,为什么需要构建最矮呢?这是因为我们要避免过拟合的情况。

什么是过拟合呢,下图是一个分类问题的小例子,左边是正常的分类结果,右边是过拟合的分类结果。

关于决策树算法的Python示例分析

在现实世界中,我们的数据通常不会很完美,数据集里面可能会有一些错误的数据,或是一些比较奇葩的数据。如上图中的蓝色方块,正常情况下我们是允许一定的误差,追求的是普适性,就是要适应大多数情况。但过拟合的时候,会过度追求正确性,导致普适性很差。

剪枝,即减少树的高度就是为了解决过拟合,你想想看,过拟合的情况下,决策树是能够对给定样本中的每一个属性有一个精准的分类的,但太过精准就会导致上面图中的那种情况,丧失了普适性。

而剪枝又分两种方法,预剪枝干,和后剪枝。这两种方法其实还是蛮好理解的,一种是自顶向下,一种是自底向上。我们分别来看看。

预剪枝

预剪枝其实你可以想象成是一种自顶向下的方法。在构建过程中,我们会设定一个高度,当达构建的树达到那个高度的时候呢,我们就停止建立决策树,这就是预剪枝的基本原理。

后剪枝

后剪枝呢,其实就是一种自底向上的方法。它会先任由决策树构建完成,构建完成后呢,就会从底部开始,判断哪些枝干是应该剪掉的。

注意到预剪枝和后剪枝的最大区别没有,预剪枝是提前停止,而后剪枝是让决策树构建完成的,所以从性能上说,预剪枝是会更块一些,后剪枝呢则可以更加精确。

ID3决策树算法的不足与改进

ID3决策树不足

用ID3算法来构建决策树固然比较简单,但这个算法却有一个问题,ID3构建的决策树会偏袒取值较多的属性。为什么会有这种现象呢?还是举上面的例子,假如我们加入了一个属性,日期。一年有365天,如果我们真的以这个属性作为划分依据的话,那么每一天会不会赖床的结果就会很清晰,因为每一天的样本很少,会显得一目了然。这样一来信息增益会很大,但会出现上面说的过拟合情况,你觉得这种情况可以泛化到其他情况吗?显然是不行的!

C4.5决策树

针对ID3决策树的这个问题,提出了另一种算法C4.5构建决策树。

C4.5决策树中引入了一个新的概念,之前不是用信息增益来选哪个属性来作为枝干嘛,现在我们用增益率来选!

关于决策树算法的Python示例分析

关于决策树算法的Python示例分析

这里面,IV(a)这个,当属性可选的值越多(比如一年可取365个日期)的时候,它的值越大。

而IV(a)值越大,增益率显然更小,这就出现新问题了。C4.5决策树跟ID3决策树反过来,它更偏袒属性可选值少的属性。这就很麻烦了,那么有没有一种更加公正客观的决策树算法呢?有的!!

CART 决策树

上面说到,ID3决策树用信息增益作为属性选取,C4.5用增益率作为属性选取。但它们都有各自的缺陷,所以最终提出了CART,目前sklearn中用到的决策树算法也是CART。CART决策树用的是另一个东西作为属性选取的标准,那就是基尼系数。

关于决策树算法的Python示例分析

关于决策树算法的Python示例分析

第一条公式中pk表示的是每个属性的可选值,将这些可选值计算后累加。这条公式和信息增益的结果其实是类似的,当属性分布越平均,也就是信息越模糊的时候,基尼系数值会更大,反之则更小。但这种计算方法,每次都只用二分分类的方式进行计算。比如说上面例子中的季节属性,有春夏秋冬四个可选值(春,夏,秋,冬)。那么计算春季的时候就会按二分的方式计算(春,(夏,秋,冬))。而后面其他步骤与ID3类似。通过这种计算,可以较好得规避ID3决策树的缺陷。

所以如果用CART算法训练出来的决策树,会和我们上面ID3训练出来的决策树有些不一样。

以上就是关于决策树算法的Python示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

--结束END--

本文标题: 关于决策树算法的Python示例分析

本文链接: https://www.lsjlt.com/news/228869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于决策树算法的Python示例分析
    本篇文章给大家分享的是有关关于决策树算法的Python示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一. 概述前面的一篇Python学习教程有跟大家介绍了决策树的一些基...
    99+
    2023-06-02
  • python实现决策树分类算法代码示例
    目录前置信息1、决策树2、样本数据策树分类算法1、构建数据集2、数据集信息熵3、信息增益4、构造决策树5、实例化构造决策树6、测试样本分类后置信息:绘制决策树代码总结前置信息 1、决...
    99+
    2024-04-02
  • Python基于决策树算法的分类预测怎么实现
    今天小编给大家分享一下Python基于决策树算法的分类预测怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、决策树的...
    99+
    2023-06-26
  • python如何实现决策树分类算法
    今天小编给大家分享一下python如何实现决策树分类算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前置信息1、决策树决策...
    99+
    2023-07-02
  • python人工智能算法之决策树流程示例详解
    目录决策树总结决策树 是一种将数据集通过分割成小的、易于处理的子集来进行分类或回归的算法。其中每个节点代表一个用于划分数据的特征,每个叶子节点代表一个类别或一个预测值。构建决策树时...
    99+
    2023-03-21
    python人工智能算法决策树 python人工智能
  • 大数据分析案例-基于决策树算法构建金融反欺诈分类模型
    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1研究目的...
    99+
    2023-09-24
    人工智能 大数据 python 数据分析 数据挖掘
  • Python学习教程:决策树算法(三)sklearn决策树实战
    前面有跟大家出过两期关于决策树算法的Python学习教程,伙伴们学了学了,今天来点实际的吧,实践一把!做个巩固!Python有一个著名的机器学习框架,叫sklearn。我们可以用sklearn来运行前面说到的赖床的例子。不过在这之前,我们需...
    99+
    2023-06-02
  • React中调和算法Diffing算法策略的示例分析
    这篇文章主要为大家展示了“React中调和算法Diffing算法策略的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React中调和算法Diffing算法策略的示例分析”这篇文章吧。算法...
    99+
    2023-06-22
  • Python中算法的示例分析
    小编给大家分享一下Python中算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 算法的设计要求算法分析的主要目标是从运行时间和内存空间消耗等方面...
    99+
    2023-06-22
  • 关于php的示例分析
    这篇文章主要介绍关于php的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是phpPHP 是 PHP Hypertext Preprocessor(超文本与处理器)的首字母缩写。这种方法叫做递归缩写。ph...
    99+
    2023-06-15
  • python算法题的示例分析
    这篇文章将为大家详细讲解有关python算法题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。题目描述:编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其...
    99+
    2023-06-15
  • 大数据分析案例-基于决策树算法构建员工离职预测模型
    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1项目说明...
    99+
    2023-09-01
    python 数据分析 大数据 pandas 人工智能
  • python决策树算法怎么实现
    这篇文章将为大家详细讲解有关python决策树算法怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、步骤计算数据集S中的每个属性的熵 H(xi)选取数据集S中熵值最小(或者信息增益最大,两者等价)...
    99+
    2023-06-15
  • JavaScritp中二叉树遍历算法的示例分析
    这篇文章主要为大家展示了“JavaScritp中二叉树遍历算法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScritp中二叉树遍历算法的示例...
    99+
    2024-04-02
  • Python机器学习应用之基于决策树算法的分类预测篇
    目录一、决策树的特点 1.优点 2.缺点 二、决策树的适用场景 三、demo一、决策树的特点 1.优点 具有很好的解释性,模型可以生成可以理解的规则。可以发现特征的重要程度。模型...
    99+
    2024-04-02
  • python中决策树算法指的是什么
    这篇文章给大家分享的是有关python中决策树算法指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、说明决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评...
    99+
    2023-06-15
  • 大数据分析案例-基于决策树算法预测ICU患者是否需要插管
    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系...
    99+
    2023-09-01
    python 数据挖掘 机器学习 决策树 数据分析
  • python中PTD算法的示例分析
    小编给大家分享一下python中PTD算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.引言1.1什么是地面点滤波?机载激光雷达(airborne ...
    99+
    2023-06-20
  • python之CSF算法的示例分析
    这篇文章给大家分享的是有关python之CSF算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 引言机载LiDAR可以获取快速、低成本地获取大区域的高精度地形测量值。为了获取高精度的地形数据(厘米...
    99+
    2023-06-20
  • 基于zTree树形菜单的示例分析
    小编给大家分享一下基于zTree树形菜单的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在每个节点添加 id 和 pid...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作