【机器学习】实验五 集成学习(投票方式)
2018-12-31 19:48
162 查看
版权声明:本文为博主原创文章,转载请标明出处 https://blog.csdn.net/C2681595858/article/details/85405240
实验代码(github)
文章目录
实验代码(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 = 100; int correct = 0; for (int counter0 = 0; counter0 < test_number;counter0++ )//测试循环 { //统计每个分类器的输出 int count[10] = { 0 }; for (int counter1 = 0; counter1 < 5; counter1++) { count[(int)(KNN(train_images, train_labels, counter1 * 200, 200, 20, test_images[counter0]))]++;//每200个训练数据作为一个分类器的训练数 } //进行投票 unsigned char index = 0, max = 0; for (int counter2 = 0; counter2 < 10; counter2++) { if (count[counter2] > max) { max = count[counter2]; index = counter2; } } //判断分类是否正确 if (index == test_labels[counter0]) correct++; } cout << "正确率: " << (double)correct / (double)test_number<<endl;
五、实验结果
正确率0.7
六、实验总结
相关文章推荐
- 斯坦福机器学习实验之2-逻辑回归(Logistic Regression)
- 机器学习实验(三):建立深度学习模型对kaggle保险索赔进行预测
- 【scikit-learn】用Python进行机器学习实验
- 三种方式进行kickstart效率小实验
- 机器学习:RadioML(4)_调制方式
- 机器学习之集成学习(三)AdaBoost算法scikit-learn库
- 单片机实验——0到60秒的计时器(使用硬件中断方式实现)
- 《机器学习》阅读心得——八、集成学习
- 从不同角度看机器学习的几种学习方式
- 程序员初学机器学习的四种方式
- FreeRTOS实验_线程安全和中断安全printf方式
- CC2541之notify通知方式的介绍和使用 一、简介 本篇介绍CC2541从机端的notify通知的两种方式。 二、实验平台 协议栈版本:BLE-CC254x-1.4.0 编译软件:IAR
- ArrayList遍历方式比较实验
- 机器学习实验(一):运用机器学习(Kmeans算法)判定家庭用电主因
- [机器学习]对hypothesis的评价方式
- 机器学习(四)集成学习概述
- [机器学习实验3]Logistic Regression and Newton Method
- 5种方式将机器学习带到Java、Python以及Go等编程语言
- 【机器学习实验】学习Python来分类现实世界的数据
- 【机器学习实验】概率编程及贝叶斯方法