热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【机器学习】实验五集成学习(投票方式)

文章目录一、实验内容二、理论准备三、实验环境四、实验过程五、实验结果六、实验总结实验代码(github)一、实验内容投票方式的集成学习。用5-6个模型。使用MNIS

文章目录

  • 一、实验内容
  • 二、理论准备
  • 三、实验环境
  • 四、实验过程
  • 五、实验结果
  • 六、实验总结




实验代码(github)
一、实验内容
  • 投票方式的集成学习。
  • 用5-6个模型。
  • 使用MNIST数据集。

二、理论准备
  • 图解集成学习:
    在这里插入图片描述
    就是使用训练数据集训练出不同的模型,然后把同一个测试数据输给每个模型,然后根据这些模型的输出,按照少数服从多数的原则决定最终结果。

三、实验环境
  • winindows10
  • vs2017
  • c++

四、实验过程
  • 这次实验选择相同的分类器,用不同的训练数据集去训练他们。
  • 分类器使用的是KNN,使用5个kNN分类器,每个分类器使用200个训练数据,最后在用100个测试数据进行测试。
    函数说明如下:
    void read_Mnist_Label(string data_type, int size,unsigned char labels[1000])
    这个函数负责读取标签文件
    • data_type是说明要读取测试数据集(train_data)还是训练数据集(test_data).
    • size:说明要读取多少个标签数据。
    • labels:存储读取出来的标签。
      void read_Mnist_Images(string data_type,int size, unsigned char images[][784])
      这个函数负责读取图像数据。
    • 前两个参数和读取label的函数参数作用相同。
    • images存放读取出来的图像数据,这里把一幅图像存放在一个一数组中,而整个读取出来的数据集是一个二维数组.
      unsigned char KNN(unsigned char training_set[1000][784], unsigned char labels[1000], int start, int size, int k, unsigned char test[784])
      这个函数就是进行kNN分类的核心函数,
      各个参数意义如下:
    • training_set:训练数据
    • labels:训练数据标签
    • start:从训练数据的哪个位置开始作为该KNN分类器的训练数据开始的下标
    • size:样本数据大小
    • k:最近的k个样本
    • test:传入一个测试数据

然后在main中,使用一个循环来进行测试模型的正确率:

int test_number &#61; 100;int correct &#61; 0;for (int counter0 &#61; 0; counter0 < test_number;counter0&#43;&#43; )//测试循环{//统计每个分类器的输出int count[10] &#61; { 0 };for (int counter1 &#61; 0; counter1 < 5; counter1&#43;&#43;){count[(int)(KNN(train_images, train_labels, counter1 * 200, 200, 20, test_images[counter0]))]&#43;&#43;;//每200个训练数据作为一个分类器的训练数}//进行投票unsigned char index &#61; 0, max &#61; 0;for (int counter2 &#61; 0; counter2 < 10; counter2&#43;&#43;){if (count[counter2] > max){max &#61; count[counter2];index &#61; counter2;}}//判断分类是否正确if (index &#61;&#61; test_labels[counter0])correct&#43;&#43;;}cout << "正确率&#xff1a; " << (double)correct / (double)test_number<<endl;

五、实验结果

正确率0.7
在这里插入图片描述

六、实验总结

推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
author-avatar
Steven
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有