机器学习——决策树算法

news/2025/1/11 10:17:07/

一、实验目的

掌握如何实现决策树算法,用并决策树算法完成预测。

二、实验内容

本次实验任务我们使用贷款申请样本数据表,该数据表中每列数据分别代表ID、年龄、高薪、有房、信贷情况、类别,我们根据如下数据生成决策树,使用代码来实现该决策树算法。

三、实验原理或流程

实验原理:

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy =系统的凌乱程度,使用算法ID3,C4.5和C5.0生成树算法使用嫡。这一度量是基于信息学理论中嫡的概念。

决策树的算法原理
(1)找到划分数据的特征,作为决策点
(2)利用找到的特征对数据进行划分成n个数据子集。
(3)如果同一个子集中的数据属于同一类型就不再划分,如果不属于同一类型,继续利用特征进行划分。
(4))指导每一个子集的数据属于同一类型停止划分。
2、决策树的优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据
缺点:可能产生过度匹配的问题

四、实验过程及源代码

1.构建决策树如下:

该决策树的结构,可以用字典表示为:
{'有自己的房子':{0:{'有工作':{O: 'no',1: 'yes'}},1 : 'yes'}}

接下来我们编写python代码来递归构建决策树。
2.打开Pycharm,新建项目,项目位置名称:/data/Test

编译器选择python3.5,如下图所示,然后点击OK:

3.在项目名Test下,创建Python File文件。

4.创建以dectree命名的文件。

5.打开dectree.py文件,编写代码构建决策树。

(1)计算数据集的香农嫡。

(2)创建测试数据集。

(3)创建函数splitDataset,按照特征划分数据集。

(dataSet:待划分的数据集,axis:划分数据集的特征,value:需要返回的特征值)

(4)选择最优特征。

(5)统计classList中出现次数最多的元素(类标签)。
 

(6)创建决策树。

6.右键,选择Run 'dectree',运行程序。

运行结果如下:

7.接下来我们用上述已经训练好的决策树做分类,只需要提供这个人是否有房,是否是高薪工作这两个信息即可。我们在dectree.py文件中添加一个classify函数,代码如下:

8.最后我们在dectree.py文件中的main函数中,输入测试数据[0,1],它代表没房,但是有高薪工作,该函数完整代码如下:

9.然后在dectree.py文件中右键,选择Run 'dectree',运行程序。

根据运行结果,我们得知会同意贷款给这个人。

五、实验结论及心得

实验结论:

本次实验中,我们使用决策树对贷款申请样本数据进行了分类和预测。通过建立决策树模型,我们可以根据不同的特征属性对个体进行分类,判断其是否符合贷款资格的要求。通过对实验结果的观察,可以得出以下结论:高薪、有房和信贷情况是影响贷款申请通过与否的重要因素;在这些因素相同的情况下,年龄越大的人更容易获得贷款资格。同时,我们也需要注意在训练决策树模型时避免过拟合现象的发生,需要对数据集进行合理分割和调整参数。总之,决策树是一种简单而有效的机器学习方法,可以应用于多个领域。

心得体会:

学习决策树的过程中,我深刻认识到了这种机器学习算法的优点和不足。决策树具有模型简单、易于理解、可解释性强等特点,在数据挖掘、分类预测等领域有着广泛的应用。但同时也存在一些缺点,如容易出现过拟合、对异常值敏感等问题。因此,在使用决策树时需要对数据进行充分的处理和清洗,采用剪枝和交叉验证等方法来避免过拟合现象的发生。此外,还需要注意选择合适的评估指标和调整参数来优化模型性能。总之,学习决策树不仅可以帮助我们更好地理解机器学习的基本原理,也有助于我们在实际应用中轻松构建高效的分类模型。


http://www.ppmy.cn/news/577169.html

相关文章

self参数、__init__方法和.__str__方法的用途和区别

在学习Python编程中,你可能会遇到self参数、__init__方法和.__str__方法这些概念。在本文中,我们将详细介绍它们的用途和区别。 理解这些概念对于编写Python类和使用面向对象编程非常重要。通过合理使用self参数、__init__方法和.__str__方法&#xff0c…

flash 和 eeprom 区别和关系、nor flash和nand flash区别

1、FLASH存储器和EEPROM存储器的区别 2、EEPROM介绍及与Flash区别_VirtuousLiu的博客-CSDN博客_eeprom 3、基础——ROM, RAM, FLASH, SSD, DDR3/4, eMMC, UFS, SD卡, TF卡,相互关系_口袋里のInit的博客-CSDN博客_emmc是rom还是ram EEPROM 芯片和flash的特点都是…

FLASH的知识

传统的FLASH分为Nor falsh和Nand flash。 (1)Nor flash Nor flash存储以块为单元,写入时必须先擦除,并且擦除和写入的速度都很慢。但nor fash具有SRAM接口,有单独的地址总线和地址总线,接口简单,就像是访问ROM一样&am…

Flash----读写外部Flash

目录 前言 Flash相关API Flash工程 首先定义下flash扇区大小 定义下扇区操作编号及定义了将要写入flash数据的数组和用来缓存flash数据的数组 接下来我们从0x77000地址起,读出16个数据(每个数据占4字节) 读完数据后,串口打印读出的数据 前言 …

Flash视频播放器

通过Flash和ActionScript编写的播放器,用来播放FLV文件。 网上有一些写好的播放器代码。 [sizemedium]ruochi播放器[/size] 见[url]http://www.ruochi.com[/url] 基本功能都有。 可以下载播放器和示例。 见[url]http://www.ruochi.com/main/post/24.html[/url] 不过…

What about Flash?

http://dreamana.com/weblog/ 其实很久以前就想写一篇关于自己对Flash的理解的文章,今天有点空,静下心来慢慢总结一下。虽然近来有一些Flash的好消息,比如AGAL2即将发布,AS3在TIOBE统计表上上升至20位;但是总体来说&a…

About Flash

以下日志纯属个人略见,有任何不妥的地方,请大家见谅,有问题的地方可以发邮件指出 如果你经常上网,你会发现在各个网站上面都会出现或多或少的Flash动画,他们以各种形式存在:广告、在线小游戏、菜单、按钮、甚至blog中的播放器也可能是Flash制…

flash简单介绍

flash是什么? FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通地过程序可以修改数据,即平时所说的“闪存”。 我们常说的闪存其实只是一个笼统的称呼,准确地说它是非易失随机访问存储器(NVRAM&#xf…