人工智能决策树大作业

article/2025/10/15 0:04:59

人工智能技术: 机器学习之决策树大作业

以西瓜集 2.0 为建模数据,采用交叉验证方法进行数据训练集和验证集的划分,实现决策树 “预剪枝”算法,要求:尽可能充分利用有限的西瓜集 2.0 数据所提供信息,建立泛化能力强的 决策树模型。(2)提交报告内包含交叉验证部分和决策树建模部分核心程序截图;(3) 对建 模结果要有分析部分。

理论定义

优秀的决策树:

优秀的决策树不仅对数据具有良好的拟合效果,而且对未知的数据具有良好的泛化能力,优秀的决策树具有以下优点:1.深度小;2.叶节点少;3深度小并且叶节点少.

剪枝的目的:处理决策树的过拟合问题。

预剪枝:生成过程中,对每个结点划分前进行估计,若当前结点的划分不能提升 [泛化能力] ,则停止划分,记当前结点为叶结点。

预剪枝的方法:

限定决策树的深度;设定一个阈值;设置某个指标,比较节点划分前后的泛化能力

交叉验证:

如果给定样本数据充足,进行模型选择的一种简单方法是随机地将数据集切分为3部分,分为训练集、验证集和测试集。

简单交叉验证:随机将数据划分为两部分,训练集和测试集。

数据处理

整个西瓜集2.0使用ID3算法生成的决策树:

简单交叉验证:随机将数据划分为两部分,训练集和测试集,各50%。

训练集

测试集

训练集ID3算法生成的决策树:

由两次划分可知:信息增益无法有效划分出第一、第二节点的最优属性,因此重新分组。

重新分组:

训练集

测试集

训练集ID3算法生成的决策树:

进行预剪枝:

这颗树深度从0开始一共4层,现在要将深度限定为2层。

因为浊响->稍蜷中4个瓜3个坏,所以稍蜷定义为坏瓜。

根蒂->硬挺只有一个瓜,且是坏瓜,所以硬挺定义为坏瓜。

预剪枝决策树:

自检验:

正确率88.9%

对测试集检验:

正确率25%

很明显,这个分组依然不理想,将比例调整,训练集70% 和测试集30%。

重新分组:

训练集

测试集

训练集ID3算法生成的决策树:

深度已经是两层的了,没必要再剪枝处理。

自检验:

正确率100%

对测试集检验:

正确率60%

仅9号和14号交换所在集合 的训练集ID3算法决策树:

因为ID3算法生成的决策树深度就已经是两层的了,自检验正确率必为100%。

对测试集检验:

正确率80%

接着又将5号和15号交换:

因为稍凹->浊响中有3个瓜(2好、1坏),所以稍凹->浊响视为好瓜,并预剪枝。

自检验:

正确率91.7%

对测试集检验:

正确率100%

总结

程序截图:代码为ID3算法,资料参考的第二个链接

程序主要实现ID3决策树算法,通过简单交叉验证将数据分为训练集和测试集。

刚开始使用各50% 随机分组,通过预剪枝后,效果非常不理想。具体表现为:1.无法区分分支属性优先级好坏,太多个信息增益相同的属性了;2.泛化能力太差;

之后使用训练集70% ,测试集30%的分组法,随机分组计算ID3决策树,再通过交换训练集和测试集某些属性,提高计算出来的决策树的泛化能力。

交换的具体方法为:

  1. 找到测试集中预测失败的组号;
  2. 出现这种问题的主要原因是训练集的“多样性”略低。

以9号和14号交换为例:9号出现判断失误是由于在纹理为稍糊下选择的分支属性有误,在原训练集中只有7号好瓜是稍糊+乌黑,所以ID3算法会认为稍糊+乌黑是好瓜,我们需要交换一个稍糊+乌黑是坏瓜的瓜,让算法重新找一个更好分支属性。在原训练集中稍糊的瓜有:7号、13号、14号。排除7号(因为我们要让稍糊+乌黑是好瓜和坏瓜同时存在)在13和14号中选择交换的对象。如果选择与13号交换,则坏瓜中又只剩下一个敲声为浊响的瓜,这属于是挖东墙补西墙的感觉,而交换14号不会使坏瓜中只有一个单一情况的瓜。最终9号瓜与14号交换,使得测试集检验正确率有效提高20% 。

接着5号和15号交换计算决策树并预剪枝得到最终决策树:

自检验正确率91.7% 测试集检验正确率100%

相较于仅交换9号和14号的决策树:

自检验正确率100% 测试集检验正确率80%

在数据上看确实有提高,泛化能力更强,但是事实上都是仅15号瓜判断失误,只是将15号瓜从测试集转移到训练集。非常神奇的是这两的决策树分支属性天差地别,它两对于现有数据的预测又比较优秀。

资料参考

[1] 机器学习-交叉验证 : python数据集划分_葛琪琪的博客-CSDN博客_python交叉验证划分西瓜集

[2]

https://blog.csdn.net/myec_lipse/article/details/127271973?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167033413516800186581790%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167033413516800186581790&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-127271973-null-null.142^v67^control,201^v4^add_ask,213^v2^t3_esquery_v3&utm_term=%E5%9C%A8%E8%A5%BF%E7%93%9C%E6%95%B0%E6%8D%AE%E9%9B%86%E4%B8%8A%E7%94%A8Python%E5%AE%9E%E7%8E%B0ID3%E5%86%B3%E7%AD%96%E6%A0%91%E7%AE%97%E6%B3%95%E5%AE%8C%E6%95%B4%E4%BB%A3%E7%A0%81&spm=1018.2226.3001.4187


http://chatgpt.dhexx.cn/article/UWPiNnMK.shtml

相关文章

决策树算法:原理与python实现案例

文章目录 决策树算法浅析决策树的介绍决策树最佳划分的度量问题决策树python案例 决策树算法浅析 决策树的介绍 决策树的定义: 决策树是一种逼近离散值目标函数的方法,学习到的函数使用树结构进行表示,完成决策任务。这里决策树可以是分类树…

决策树实例-ID3

决策树-ID3实例 参考书籍: 《机器学习》周志华,第1版 《统计学习方法》李航,第2版 用来记录自己对书中知识的理解,加强自己的理解和记忆,同时提出自己迷惑不解的地方,提高自己编辑的表达能力。 代码参考博…

决策树算法及Python 代码示例

决策树是一种基于树形结构的算法,用于在一系列决策和结果之间建立模型。它通过对特征和目标变量之间的关系进行划分,来预测目标变量的值。 决策树算法示例: 假设我们有一组数据,其中包含天气,温度,湿度和是否出门的特…

决策树一CART算法(第四部分)

决策树一CART算法(第四部分) CART树的剪枝:算法步骤 输入:CART算法生成的决策树。 输出:最优决策树T 设 K 0 , T T 0 K0,TT_0 K0,TT0​ ,从完整的决策树出发 ​ k代表迭代次数,先…

决策树算法

决策树 决策树(Decision Tree)首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析,本质上是通过一系列规则对数据进行分类的过程 决策树是一种典型的分类方法。其中: 每个内部结点表示一个属性上的判断每个分支代表一个判断结果的输出每…

决策树ID3、C4.5和CART算法例子详解

决策树 决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对…

决策树算法原理及案例

机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响。决策树是机器学习中最基础且应用最广泛的算法模型。本文介绍了机器学习的相关概念、常见的算法分类和决策树模型及应用。通过一个决策树案例,着重从特征选择、剪枝等方面描述决策树…

通过实例理解决策树算法(ID3,C4.5,Cart算法)

(一)实例:使用ID3算法给出“好苹果”的决策树 (二)决策树的工作原理 我们在做决策树的时候,会经历两个阶段:构造和剪枝。 构造原理——构造的过程就是选择什么属性作为节点的过程,…

数据挖掘之C4.5决策树算法

1.决策树算法实现的三个过程: 特征选择:选择哪些特征作为分类的标准是决策树算法的关键,因此需要一种衡量标准来进行特征的确定,不同的决策树衡量标准不同。例如C4.5决策树就是以信息增益率来作为衡量标准。决策树的生成&#xf…

决策树ID3例题

表格里统计了14天的气象数据,特征属性包括outlook,temperature,humidity,windy,类别属性为是否打球(play),用ID3算法生成决策树。 解答过程:

决策树算法与案例

决策树算法介绍 树模型 决策树:从根节点开始一步步走到叶子节点(决策)。所有的数据最终都会落到叶子节点,既可以做分类也可以做回归 树的组成 根节点:第一个选择点;非叶子节点与分支:中间过程…

数据挖掘--决策树ID3算法(例题)

决策树分类算法 决策树分类算法通常分为两个步骤:决策树生成和决策树修剪。 决策树生成算法的输入参数是一组带有类别标记的样本,输出是构造一颗决策树,该树可以是一棵二叉树或多叉树。二叉树的内部结点(非叶子结点)…

决策树算法原理+例题练习

一、决策树的优缺点 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感,可以处理不相关特征数据。缺点:可能会产生过度匹配的问题。使用数据类型:数值型和标称型。 二、一个实例 一天&#…

高级管理学:计算题

题1:决策树和期望值 某企业拟开发新产品,现在有两个可行性方案需要决策。 方案一:开发新产品 A,需要追加投资 180 万元,经营期限为 5 年。此间,产品销路好每年可获利 170 万元;销路一般每年可获…

Nikto漏洞扫描工具简介

nikto漏洞扫描工具在我的靶场上测试报告如下: 测试时间会很长,我是在虚拟环境下做的,给的配置不高,吃尽CPU,最后不得不强制关闭虚拟机,通过-o参数将结果输出到文档中。 结果显示: 一些黑客比较感…

wed渗透:记录kali系统下扫描工具nikto的使用

目录 前言1 工具介绍2 使用场景3 使用方法3.1 查看帮助信息3.2 Nikto插件3.3 扫描3.3.1 常规扫描3.3.2 指定端口扫描3.3.3 指定协议扫描3.3.4 指定目录扫描3.3.5 多目标扫描3.3.6 配合namp利用管道输入扫描3.3.7 利用代理扫描 3.4 Nikto扫描过程中的交互参数3.5 修改nikto配置文…

Nikto安装及使用

系统要求如下(我自己使用的是linux,其它两个没有研究): 一、安装软件 第一步准备两个软件,如下: 1、nikto-master.zip(官网下载地址:https://cirt.net/nikto2) 2、libw…

Nikto详细使用教程

Nikto简介 基于perl语言开发的web页面扫描器。其特点扫描全面,速度快。 nikto常用命令 -upodate 升级,更新插件 -host 扫描目标URl -id username:password http认证接口 -list-plugins …

使用Nikto扫描网站漏洞

Nikto简介 Nikto是一个简单的开源Web服务器扫描程序,可以检查网站并报告它发现的可能用于利用或破解网站的漏洞。此外,它是业界使用最广泛的网站漏洞工具之一,并且在许多圈子中被认为是行业标准。 虽然这个工具非常有效,但它根本…

Kali工具库之Nikto

工具简介 Nikto是一个开源的WEB扫描评估软件,可以对Web服务器进行多项安全测试,能在230多种服务器上扫描出 2600多种有潜在危险的文件、CGI及其他问题。Nikto可以扫描指定主机的WEB类型、主机名、指定目录、特定CGI漏洞、返回主机允许的 http模式等。 链…