MNIST手写数字识别数据集研究意义及分析

1 研究MNIST数据集对于本人课题的意义

本人的硕士研究课题是缺陷检测,缺陷检测也是机器学习&深度学习算法在图像处理中的应用,它的难点在于算法创新。因此,在正式开始进行缺陷检测算法的研究之前使用MNIST数据集对于经常用到的图像处理算法进行系统研究具有重要意义。正好我的Python机器学习大作业也是这个题目,因此这篇文章算是研一一整年学习的一个总结。

2 MNIST数据集的优点

结合ChatGPT生成的答案,我总结了MNIST数据集总共有以下两个优点:

1. 在算法与模型创新上,研究手写数字识别可以为研究者提供一个统一的评估标准,可用于比较不同算法在同一任务上的性能,有助于算法的发展和改进;MNIST的简单性和易用性也有利于研究者尝试新的机器学习方法和模型架构,便于验证新方法的可行性和有效性,为复杂视觉任务提供基础。

2. 在特征提取和降维上,MNIST图像数据集维度较低,这很大程度上减小了计算开销,通过在MNIST上探索不同的特征提取和降维技术,可以为更复杂的图像识别任务提供经验和洞察。

3 Kaggle上MNIST数据集的特性

Kaggle上的MNIST数据集存在于Digit Recognizer竞赛中,目前有1584组队伍提交了他们的解决方案,因此对于机器学习和深度学习的新手来说,MNIST数据集及其解决方案会是一个很好的学习资料,不同作者提交的方案包含了机器学习方法和深度学习方法,机器学习方法主要包括线性、非线性分类、支持向量机、随机森林等,深度学习方法主要有深度神经网络、卷积神经网络等。

Kaggle的每一个提交方案上,都会对原始数据进行了不同程度的分析以及图像增强等操作,因此有必要明确一下Kaggle中MNIST数据集的存在形式以及提交要求。

Kaggle竞赛的MNIST数据集主要包含三个csv文件,如图1所示:

图1 Digit Recognizer文件夹中的工作表标题

在训练数据文件train.csv中,共有42000组数据,label是数字的标签,包含0到9的数字标签。由于每张图像的高度为28个像素,宽度为28个像素,因此每张图像有784个像素,在表格中使用pixel0至pixel783表示,为了在图像上定位这个像素,假设我们已经将x分解为x = i * 28 + j,其中i和j是0到27之间的整数,包括在内。那么像素x就位于28 x 28矩阵的第i行和第j列,(以0为索引)。像素的具体数值是介于0到255之间的整数,数字越大代表这个像素点越暗。部分表格数据如表1所示。

表1 train.csv 中的部分数据

label

pixel0

pixel1

pixel2

pixel3

pixel4

1

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

4

0

0

0

0

0

0

0

0

0

0

0

测试数据集与训练数据集标签基本相同,只是不包含label列,共有28000组数据。Kaggle提交的文件应该是以下格式:对于测试集中的28000张图像中的每一张,输出一个包含ImageId和你预测的数字的单行。例如,如果参赛者预测第一张图片是3,第二张图片是7,第三张图片是8,那么提交的文件样例如表2.2所示,sample_submission也包含了提交的样例:

表2 sample_submission提交样例

ImageId

label

1

3

2

7

3

8

最终的评估指标是分类准确率,或者说正确分类的测试图像的比例。例如,分类准确率为0.97,表示除了3%的图像外,参赛者对所有的图像都进行了正确分类。训练集中的每个标签的数量如图2所示,从条形统计图看,基本上做到了数据的均衡。

图2 train.csv中每个标签的数量

绘制图2的代码如下:

import matplotlib.pyplot as pltlabels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
counts = [4132, 4684, 4177, 4351, 4072, 3795, 4137, 4401, 4063, 4188]plt.bar(labels, counts, color='skyblue')plt.xlabel('Label')
plt.ylabel('Count')
plt.title('Label Counts')for i in range(len(labels)):plt.text(labels[i], counts[i] + 100, str(counts[i]), ha='center', va='bottom')plt.xticks(labels)
plt.yticks(range(0, max(counts) + 200, 500))plt.show()

可以使用算法将csv表格中像素点的灰度值转化为手写数字图像,如图3所示。

图3 由像素点的值转换成的手写数字图像

将表格中的像素点的值转换成的手写数字图像的代码如下所示:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as npdata = pd.read_csv("train.csv")# Plots the image represented by a row
def plot_number(row, w=28, h=28, labels=True):if labels:# the first column contains the labellabel = row[0]# The rest of columns are pixelspixels = row[1:]else:label = ''# The rest of columns are pixelspixels = row[0:]#    print(row.shape, pixels.shape)# Make those columns into a array of 8-bits pixels# This array will be of 1D with length 784# The pixel intensity values are integers from 0 to 255pixels = 255-np.array(pixels, dtype='uint8')# Reshape the array into 28 x 28 array (2-dimensional array)pixels = pixels.reshape((w, h))# Plotif labels:plt.title('Label is {label}'.format(label=label))plt.imshow(pixels, cmap='gray')# Plots a whole slice of pictures
def plot_slice(rows, size_w=28, size_h=28, labels=True):num = rows.shape[0]w = 4h = math.ceil(num / w)fig, plots = plt.subplots(h, w)fig.tight_layout()for n in range(0, num):s = plt.subplot(h, w, n+1)s.set_xticks(())s.set_yticks(())plot_number(rows.iloc[n], size_w, size_h, labels)plt.show()# Plotting first few rows
print(plot_slice(data[0:12]))

 4 总结

MNIST数据集被称为计算机视觉领域的“hello world”数据集,对于研究者们试验新算法、学习图像处理具有重要的意义。在进行MNIST图像分类之前,首先需要明确问题:也就是说对于数据集本身的性质有所了解,因此本篇文章也介绍了MNIST数据集的性质、统计了标签分类、对于像素点进行了可视化的处理,为后续的算法研究打下了基础。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雅思口语话题准备(一)

目录 where are you from? 3.Will you live in the countryside in the future? 4.Have you learned the history of your hometown at school? Does your name have any particular(or special)meaning? 作为一个英语音标大师,请问ɒ和ɔ他们之间有…

文心一言来了,百度却让自己活成了笑话

3月16日,百度类ChatGPT应用“文心一言”发布,不过,对于这场由创始人兼CEO亲自上场的发布会,业内和网友并不看好。发布会结束后,许多网友表示,活着活着,百度终于让自己活成了笑话。 网友所谓的笑…

[200724]什么才是高速固态硬盘?

更换系统盘,但是不知从何入手。。。 旧系统盘:Intel SSDPEKKR256G7 https://www.mouser.cn/datasheet/2/612/e6000p-product-brief-1369263.pdf 看来这个就是高速固态硬盘,升级到1T,必须满足: 接口:M.2接…

USB 3.0 Rx Detect之超速U盘的识别

1 USB超速SerDes原理介绍 1.1 SerDes Rx.Detect SerDes Rx.Detect的原理比较简单,就是通过一个逻辑电路比较RC时间常数的大小。 - 当Rx不存在时,RC时间常数较小。 - 当Rx存在时,RC时间常数较大。 下面将详细描述其原理。 Figure 1-1 USB 3.0电…

百度地图多点路线规划_通勤出行该选谁?高德、百度地图对比,看看谁是上班最优选...

现在导航已经成为我们生活中不可分割的一部分,无论是走路,骑行还是自驾游,我们都会开启导航。特别是在驾车时,有急转弯,测速拍照,超速等,当我们的驾驶方式出现危险行为的时候,导航都…

人工智能真正值得担心的是缺德,而不是聪明

https://www.toutiao.com/a6686045237724316173/ 我们都要思考技术如何体现特定的价值观和假设,这有助于确保“我们用技术打造的世界,是一个我们想要居于其中的世界”。 我们都要思考技术如何体现特定的价值观和假设,这有助于确保“我们用技术…

npm init @vitejs/app 到底是什么意思

对比:基于vue-cli创建和vite创建项目 //vite npm init vitejs/app //cli vue i -g vue脚手架 vue create project-name通过脚手架创建项目需要分两步,而基于vite创建项目只需要一步,那么npm init vitejs/app具体是什么意思呢。 首先了解npx…

交换机中流量监管、流量整形和接口限速是如何实现的

本文介绍交换机的流量监管、流量整形和接口限速的原理,并且介绍相关参数和配置方法。 01 相关名词解释 表1-1 简称及对应的全称 流量监管、流量整形和接口限速是通过对流量规格进行监督,以限制流量及其资源使用的流控策略。 尽管流量监管和流量整形都…

百度地图sdk导航

百度地图sdk导航 文章目录 百度地图sdk导航前言一、准备二、下载demo三、配置将上面libs的复制到下面的目录(我有x86和x86_64因为之前同事写了地图插件🐓)导入这两个aar导入过程 1.配置build.gradle(两个不同的)2.打开…

c语言程序设计高速公路超速处罚,高速超速违章处理流程

1 如图所示,驾驶机动车看到这种手势信号时,应当停车等待。查看本题分析 2 如图所示,驾驶机动车在路口遇到这种交通信号时,右转弯的车辆在不妨碍被放行的车辆、行人的情况下,可以通行。查看本题分析 3 机动车驾驶证损毁…

什么是跨站脚本 (XSS) 攻击?

目录 定义跨站点脚本的工作原理 进行攻击以感染网站受感染的网站攻击用户统计和分析跨站点脚本攻击的类型反射式(非持久性)XSS反射式(非持久性)XSS 示例 存储(持久)XSS存储(持久)XSS…

周遭心理学的应用-什么是心理学?

前言 这篇文章的标题如果去掉好处二字就显得并不吸引人,难道好处二字对我们的判断影响那么大吗?这又是为什么?(在引起共鸣的因素章节中,将会得到你要的答案) 每一篇文章,每一本书只要涉及到生活…

超速判断java_超速如何判定

例如高速限速80码,行车时速92码,(92-80)除以80乘以100%等于15%,那就超速15% 。 第八十六条 机动车在道路上行驶,违反限速规定的,按下列规定处罚: 1、时速超过限定时速不到10%的,给予警告。 2、在…

怎样用c语言写高速超速罚款标准,超速罚款 超速扣分标准2020新交规怎么规定的...

高速驾驶确实可以带来速度的乐趣,但是这种行为违背了交通规则,而是超速行为。 那超速呢? 超速驾驶的惩罚是什么? 让我们来看看新的2020年超速处罚标准! 一、超速扣分标准新交规 机动车在道路上行驶,违反限速规定的,按下列最新超…

000210什么意思 error_检测卡上是0002什么意思啊

展开全部 【电脑主板故障诊断卡 代码】 代码 Award BIOS Ami BIOS Phoenix BIOS或Tandy 3000 BIOS 00 . 已显62616964757a686964616fe58685e5aeb931333264623139示系统的配置;即将控制INI19引导装入。 . 01 处理器测试1,处理器状态核实,如果测试失败&…

煤矿企业矿用重大设备感知数据接入方案

重大设备感知数据接入 建 设 方 案 1、项目建设背景 为贯彻落实全国关于安全生产工作的总体部署,依据《国家矿山安全监察局关于印发煤矿冲击地压、水害防治及重大设备感知数据接入细则(试行)的通知》(矿安〔2021〕2号&#xff09…

Python案例3—计算基础代谢率V_4.0(已完结)

大家好,我是白菜胡萝丸子 人生苦短,Python当歌 项目导入 版本4.0:如果用户把信息输入错误了怎么办——处理异常操作 项目分析—理清思路 分析问题:分析问题的计算部分明确问题:划分问题的输入、处理和输出部分&…

代谢组检测

代谢组学是继基因组学和蛋白质组学之后新近发展起来的一门学科,是系统生物学的重要组成部分。基因组学和蛋白质组学分别从基因层面和蛋白质层面探寻生命的活动,而实际上细胞内许多生命活动是与代谢物相关的,如细胞信号、能量传递等都是受代谢…

[基因遗传算法]进阶之三:sko.GA的实践TSP

参考资料:《VRP问题分类》 相关文章: 《[基因遗传算法]原理思想和python代码的结合理解之(一) :单变量》 《[基因遗传算法]进阶之二:最优规划问题–多种编码方式多变量》 文章目录 一. GA的用法1.1 help(sko.GA)1.2 目标函数的书写A. 单变量的书写B. 多变量的书写C. 变量的范围…

chatgpt赋能python:Python计算BMI——如何快速方便地计算身体质量指数

Python计算BMI —— 如何快速方便地计算身体质量指数 身体质量指数(BMI)是一种常用的计算方法,用于衡量人体体重和身高的比例。这个算法在健康行业中非常受欢迎,因为它简单而且可以快速得出结果。在Python中,我们可以…