机器学习实验二:决策树模型

news2024/9/23 21:22:09

系列文章目录

  1. 机器学习实验一:线性回归
  2. 机器学习实验二:决策树模型
  3. 机器学习实验三:支持向量机模型
  4. 机器学习实验四:贝叶斯分类器
  5. 机器学习实验五:集成学习
  6. 机器学习实验六:聚类

文章目录

  • 系列文章目录
  • 一、实验目的
  • 二、实验原理
  • 三、实验内容
  • 四、实验步骤
    • 1.数据集引入及分割
    • 2. 训练决策树
    • 3. 利用 CCP 进行后剪枝
  • 总结


一、实验目的

(1)了解 pandas 和 sklearn 数据科学库功能;
(2)掌握决策树原理,包括划分选择中三种经典指标信息增益、增益率和基尼
指数的优缺点;
(3)掌握剪枝处理方法及作用;
(4)学会通过精确率、召回率和 F1 值度量模型性能。

二、实验原理

决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过
程,由节点和有向边组成,结点有 2 种结构:内部节点表示一个特征或属性,叶
节点表示一个类别。它可以认为是 if-then 规则的集合,也可以认为是定义在特
征空间与类空间上的条件概率分布。
学习时,利用训练数据根据损失函数最小化的原则建立决策树模型。预测时,
对新的数据,利用决策树模型进行分类。决策树学习通常包括 3 个步骤:特征选
择、决策树的生成和决策树的修剪。

三、实验内容

使用 Python 读取数据集信息并利用 sklearn 训练决策树模型,随后使用生
成的决策树实现分类预测,调整决策树划分方法及剪枝方法,并根据精确率、召
回率和 F1 值度量模型性能。
(1)实验数据介绍
实验数据为来自 UCI 的鸢尾花三分类数据集 Iris Plants Database。
数据集共包含 150 组数据,分为 3 类,每类 50 组数据。每组数据包括 4 个
参数和 1 个分类标签,4 个参数分别为:萼片长度 sepal length、萼片宽度 sepal
width、花瓣长度 petal length、花瓣宽度 petal width,单位均为厘米。分类
标签共有三种,分别为 Iris Setosa、Iris Versicolour 和 Iris Virginica。
数据集格式如下图所示:在这里插入图片描述
为方便使用,也可以直接调用 sklearn.datasets 库中提供的 load_iris()
方法加载处理过的鸢尾花分类数据集。
(2)评价指标介绍
评价指标选择精确率 P、召回率 R、F1 度量值 F1。
具体代码实现时,可以直接调用 sklearn 库中的相应方法进行计算。

四、实验步骤

1.数据集引入及分割

将数据集按 2/3 训练集,1/3 测试集的比例进行随机分割。代码如下:

X = iris.data
y = iris.target
X_train,X_test,y_train,y_test = 
train_test_split(X,y,test_size=1/3,random_state=0)
print(' 数 据 集 样 本 数 : {}, 训 练 样 本 数 : {}, 测 试 集 样 本 数 :
{}'.format(len(X),len(X_train),len(X_test)))

2. 训练决策树

利 用 sklearn 提供的 DecisionTreeClassifier() 方 法 构 造 决 策 树 ,
DecisionTreeClassifier()方法的常用参数如下:
划分准则 criterion,可选:基尼指数 gini、信息增益 entropy、对数损失
log_loss,默认 gini;
最大树深度 max_depth,整数型,默认为不限制;
最大叶节点数 max_leaf_nodes,整数型,默认为不限制;
最大代价复杂度 ccp_alphat,非负浮点型,默认为 0.0。
我们这里分别利用三种不同的划分准则,以 4 为最大深度对树进行前剪枝。
以使用基尼指数的决策树为例,训练并查看树结构,代码如下:

gini_model = 
DecisionTreeClassifier(criterion='gini',max_depth=4,splitter='best')
gini_model.fit(X_train,y_train)
gini_y_pred = gini_model.predict(X_test)
tree.plot_tree(gini_model)
plt.show()

可以得到对应的树结构。可以看到,排除根节点,这棵决策树为 4 层的二叉
树,这也符合基尼指数划分方法的特点。计算该树的精确率、召回率和 F1 度量
值。
继续训练其他两种划分方式,在同等预剪枝条件下,对于信息增益 Entropy
方式划分,可以得到对应的决策树。
对于对数损失 log_loss 方式划分,能得到对应的决策树和性能结果。

3. 利用 CCP 进行后剪枝

CCP(Cost Complexity Pruning)为代价复杂度剪枝法,核心思想为在树构
建完成后,对树进行剪枝简化,使以下损失函数最小化:在这里插入图片描述

其中,T 为叶子节点个数,N 为所有样本个数,N_i 为第 i 个叶子节点上的
样本数,L_i 为第 i 个叶子节点的损失函数,α为待定系数,用于确定惩罚节点
个数,引导模型用更少的节点。
具体操作中,首先使用 cost_complexity_pruning_path()方法需要计算树
的 CCP 路径,得到 alpha 与树纯度的关系,具体代码如下:

pruning_path = gini_model.cost_complexity_pruning_path(X_train, y_train)
print("ccp_alphas:",pruning_path['ccp_alphas'])
print("impurities:",pruning_path['impurities'])

总结

以上就是今天要讲的内容,机器学习实验二:决策树模型

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

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

相关文章

kafka 3.x 学习笔记

kafka 3.x 学习笔记 在 kafka 2.8.0 版本之前,安装使用 kafka 需要配套安装 zookeeper,但在 2.8.0 版本之后,不再需要安装 zookeeper,本次学习笔记采用的 kafka 版本为 3.0.0。 文章目录 kafka 3.x 学习笔记一、kafka 定义1 什么是…

学习Opencv(蝴蝶书/C++)——4.图形和大型数组类型(上)

文章目录 1. cv::Mat类的成员变量1.1 flags1.2 cv::Mat::step2 存储方式,存储位置计算2.1 存储方式2.2 🌈存储位置计算2.2.1 基本计算公式2.2.1 step代码说明2.2.3 内存地址计算代码说明3 创建数据3.0 Mat的构成3.0.1 3.0版本之后的Mat3.0.2 cvMat3.1 构造函数3.2 🌈构造函…

Tomcat的启动关闭及日志说明

目录 1 启动Tomcat 1.1 启动 1.2 检查Tomcat启动是否正常 1.3 浏览器访问 2 关闭Tomcat 3 Tomcat日志说明 3.1 catalina.out 3.2 localhost.[日期].log 3.3 host-manager.[日期].log 3.4 manager.[日期].log 3.5 localhost_access_log.[日期].txt 1 启动Tomcat 1.1 启动 在…

Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066

以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…

自动采集发布,轻松博客运营——Zblog插件指南

我们是否常常为找不到合适的文章而烦恼?是不是每次写作都要花费大量时间在查找资料上?对于将内容创作作为长期工作来说,保持话题新颖,素材内容充实是很有必要的,ZBlog采集插件可以将这些问题都将化繁为简。 ZBlog是什么…

前端项目中CDN的一些问题【性能优化篇】

1. CDN的概念 CDN(Content Delivery NetWork,内容分发网络),是指利用最靠近每位用户的服务区,更快的将资源发送给用户。 提高用户的访问速度减轻服务器压力提高网站的稳定性和安全性 2. CDN的作用 CDN一般用来托管…

GaussDB数据库SQL系列-序列的使用

目录 一、前言 二、GaussDB数据库中的序列 1、语法(CREATE SEQUENCE) 2、注意事项 三、GaussDB数据库中的示例 1、示例一:创建普通序列 2、示例二:创建与表关联的序列 四、小结 一、前言 在数据库管理中,序列(SEQUENCE&a…

前端开发者眼中的Node.js未来发展趋势

前言 随着互联网的高速发展,前端开发领域的技术也在不断演进,各种各样的前端技术日新月异,前端框架也是层出不穷。在这个变化的过程中,Node.js作为一种强大的服务器端运行环境,已经成为前端开发者的重要技术之一&#…

netty源码:(4)ServerBootstrap

ServerBootstrap的group方法用来给成员变量赋值,如下图 AbstractBootstrap为ServerBootstrap的父类。 ServerBootstrap的channel方法用来设置channelFactory成员变量(在父类AbstractBootstrap里) ServerBootstrap的childHandler方法用来给本类的成员…

MySQL笔记-第05章_排序与分页

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第05章_排序与分页1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序 2. 分页2.1 背景2.2 实现规则2.3 拓展 第05章_排序与分页 讲师&#…

HNU-电路与电子学-2021期末A卷(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程,故实际上目前只有2020与2021两个年级考过期末考试。 本份卷子的参考性很高,这是2020级的期末考卷。题目都是很典型的,每一道题都值得仔细研究透。 特别注意:看得懂答案跟写得…

【C++】map和set的使用及注意事项

map和set的使用及注意事项 1.关联式容器2. 键值对3.set3.1接口介绍3.1.1构造3.1.2迭代器3.1.3容量3.1.4修改 3.2set使用及注意事项 4.multiset5.map6.multimap349. 两个数组的交集 1.关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如&#xf…

【EI会议征稿中】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024) 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

什么是Amazon Lambda(无服务器计算服务)

Lambda 在高可用性计算基础设施上运行代码,用于执行计算资源的所有管理工作。这包括服务器和操作系统维护、容量调配和弹性伸缩、代码和安全补丁部署以及代码监控和日志记录。您只需要提供代码。 最近亚马逊云服务提供了超多免费的云服务,快来领取免费套…

Shein、Temu拓荒背后,中国快递业“卷”向海外

【潮汐商业评论/原创】 在中国互联网行业,软银创始人孙正义有一个耳熟能详的“时光机理论”,意思是充分利用不同国家和行业之间发展的不平衡,在发达市场获取经验,然后利用这些经验去开发落后的市场。从发达市场到落后市场的穿越&…

人体姿态估计算法

人体姿态估计算法 1 什么是人体姿态估计2 基于经典传统和基于深度学习的方法2.1 基于经典传统的人体姿态估计算法2.2 基于深度学习的人体姿态估计算法OpenPoseAlphaPose (RMPE) 3 算法应用4 Paper 人体姿态估计在现实中的应用场景很丰富,如下 动作捕捉:三…

小程序开发

1.准备工作 1.注册公众平台账号(免费)2.下载小程序开发工具(免费) 2.开发步骤 1.第一个小程序 1.小程序的AppID相当于小程序平台的一个身份证,这里使用的是测试号(注意区别于服务号或订阅号的AppID&#xf…

浪潮信息KeyarchOS——保卫数字未来的安全防御利器

浪潮信息KeyarchOS——保卫数字未来的安全防御利器 前言 众所周知,目前流行的操作系统有10余种,每一款操作系统都有自己的特点。作为使用者,我们该如何选择操作系统。如果你偏重操作系统的安全可信和稳定高效,我推荐你使用浪潮信…

服务器巡检表

《服务器巡检表》检查项: 1、系统资源 2、K8S集群 3、Nginx 4、JAVA应用 5、RabbitMQ 6、Redis 7、PostgreSQL 8、Elasticsearch 9、ELK日志系统 获取软件开发全套资料进主页。

连夜整理的6个开源项目,都很实用

偶然找到的这个宝藏网站,站内集齐了大量的开源项目。 推荐实用的项目 1、vueNextAdmin 基于 vue3.x CompositionAPI setup 语法糖 typescript vite element plus vue-router-next pinia 技术,适配手机、平板、pc 的后台开源免费模板,…