首页 > 编程语言 >(带有预剪枝和后剪枝)算法实现与测试

(带有预剪枝和后剪枝)算法实现与测试

时间:2024-11-20 09:58:49浏览次数:1  
标签:剪枝 训练 准确度 算法 测试 test 决策树

一、实验目的

 

深入理解决策树、预剪枝和后剪枝的算法原理,能够使用 Python 语言实现带有预剪枝和后剪枝的决策树算法 C4.5 算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

 

二、实验内容

 

(1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注

意同分布取样);

(2)使用训练集训练分类带有预剪枝和后剪枝的 C4.5 算法;

(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选

择;

(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验三的

部分。

 

 

三、算法步骤、代码、及结果

   1. 算法伪代码

1. 加载iris数据集

2. 将数据集分为特征集X和目标集y

3. 使用留出法将数据集分为训练集和测试集,测试集占1/3

4. 创建决策树分类器对象,设置预剪枝参数max_depth和min_samples_split

5. 使用训练集数据训练决策树分类器

6. 使用五折交叉验证评估模型的准确度,并打印准确度分数和平均准确度

7. 使用五折交叉验证评估模型的精度、召回率和F1值,并打印这些指标

8. 使用训练好的决策树分类器对测试集进行预测

9. 输出测试集上的分类报告,包括准确度、精度、召回率和F1值

10. 输出测试集上的准确度

   2. 算法主要代码

  

函数参数说明

 

load_iris(): 加载iris数据集。没有参数。

train_test_split(X, y, test_size=1/3, random_state=42): 将数据集分为训练集和测试集。test_size参数指定测试集的比例,random_state参数用于确保每次分割的一致性。

DecisionTreeClassifier(criterion="gini", max_depth=3, min_samples_split=5, random_state=42): 创建决策树分类器。criterion参数指定分裂质量的衡量标准,max_depth参数限制树的最大深度,min_samples_split参数限制分裂内部节点所需的最小样本数,random_state参数用于确保每次训练的一致性。

fit(X_train, y_train): 训练决策树模型。X_train和y_train分别是训练集的特征和目标。

cross_val_score(clf, X_train, y_train, cv=5, scoring='accuracy'): 使用五折交叉验证评估模型性能。cv参数指定交叉验证的折数,scoring参数指定评分标准。

predict(X_test): 使用训练好的模型对测试集进行预测。X_test是测试集的特征。

classification_report(y_test, y_pred): 输出分类报告,包括准确度、精度、召回率和F1值。y_test是测试集的真实目标,y_pred是预测的目标。

accuracy_score(y_test, y_pred): 计算准确度。y_test是测试集的真实目标,y_pred是预测的目标。

 

 

3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)

 

 

 

 

四、实验结果分析

1. 测试结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)

 

 

2. 对比分析

 C4.5决策树:使用信息增益比作为分裂标准,带有预剪枝和后剪枝,通常可以防止过拟合,提高模型的泛化能力。

ID3决策树:使用信息增益作为分裂标准,通常可以捕捉到更多的特征交互,但可能导致过拟合。

随机森林:集成学习方法,使用多个决策树进行分类,通常具有较高的准确度和稳定性,但计算成本较高。

标签:剪枝,训练,准确度,算法,测试,test,决策树
From: https://www.cnblogs.com/aixin52129211/p/18556209

相关文章

  • 使用 ROCm 在 AMD GPU 上微调和测试前沿的语音模型
    Fine-tuningandTestingCutting-EdgeSpeechModelsusingROCmonAMDGPUs—ROCmBlogsAI语音代理或语音机器人是通过使用口头语言与人交流而设计的。语音机器人通常用于客户服务和个人助手应用,并有可能进入并革命性地改变人们与技术互动的几乎每个方面,这些方面可以从......
  • 逻辑回归算法实现与测试
    逻辑回归算法实现与测试一、实验目的 深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用Python语言实现对数几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容 (1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作......
  • 软件测试笔记|Python自动化测试|常见的列表相关函数有哪些?
    VX公众Hao:阳哥整理软件测试笔记正文:以下是一些常见的Python列表相关函数:增删操作相关函数•list.append():在列表末尾添加一个元素。例如,my_list=[1,2];my_list.append(3),此时my_list变为[1,2,3]。•list.extend():用于将一个可迭代对象(如列表、元组等)中的元素逐个......
  • 软件测试笔记|Python自动化测试|常见的字典相关函数有哪些?
    VX公众Hao:阳哥整理软件测试笔记正文:以下是一些常见的Python字典相关函数:增删改操作相关函数•dict.update():用于将一个字典的键值对更新到另一个字典中。如果键已存在,就更新对应的值;如果键不存在,就添加新的键值对。•dict.pop():通过指定键来删除字典中的键值对,并返回被......
  • 软件测试之理论知识_1.3
    软件测试知识:1、为什么要测试?(1)代码是人写的,难免会出错(2)软件本身就会存在问题,非正常运行也会问题(3)环境会影响软件出现问题(4)软件测试活动是保证软件测试质量之一2、测试的定义什么?(重点)制造业定义:以检验产品是否满足需求为目标软件行业定义:a、验证软件的正确性b、发现软件......
  • 软件测试之测试分类_1.4
    软件测试之测试分类一、按开发阶段划分1、单元测试2、集成测试3、系统测试4、验收测试二、按查看代码划分1、黑盒测试定义:黑盒测试也是功能测试,测试中把被测试的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据和输出数据比如:计算器当作黑盒子:输入1+......
  • MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元时间序列预测
    目录项目背景介绍...1项目目标与意义...1项目挑战...1项目特点与创新...2项目应用领域...2项目效果预测图程序设计...2项目模型架构...3项目模型描述...3项目结构设计...6项目部署与应用...6项目扩展...6项目注意事项...7项目未来改进方向...7项目......
  • MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测
    目录1.项目背景介绍...12.项目目标与意义...13.项目挑战...24.项目特点与创新...25.项目应用领域...26.项目效果预测图程序设计...37.项目模型架构...38.项目模型描述及代码示例...3模型实现的详细步骤:...39.项目模型算法流程图...510.项目结构......
  • 剑指RSA——量子计算Shor算法对经典密码体制的威胁
    摘  要整数分解是数论中一个古老且复杂的问题,当今世界上最著名且广泛使用的RSA公钥密码体制,其安全性依赖于对极大整数进行因数分解的困难性。经典计算机在分解极大整数时所需的时间成本与信息价值不成正比,这使得RSA算法的安全性得以维持。然而,随着量子计算的迅猛发展,传统......
  • 测试工程师1——测试基础(测试分类+测试模型+测试用例)
    hello~好久没有更新了,这段时间,我会用一个月左右的时间,和大家一起成长为中级测试工程师。我是平平无奇的羊,一个在字节搬砖的测试开发工程师。欢迎大家交流学习!软件测试分类主要按两种划分:阶段划分(阶段:软件产出过程顺序)代码可⻅度阶段划分单元测试说明:针对程序源代码进⾏测......