机器学习——手写数字识别

这篇具有很好参考价值的文章主要介绍了机器学习——手写数字识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、:前言

  • 这篇文章能够帮助你从数据到模型的整个过程实现
  • 不过至于安装第三方库等基础问题,本文不涉及,因为确实不难,搜一搜一大把
  • 本此实验运行环境为jupyter,当然通过pycharm也是可行的

1、数据:

  • 手写数字共5000组数组
  • 其中一共有0-9,10组数据,每一组中有500张对应的手写数字的图片
  • 数据资料:
    链接:https://pan.baidu.com/s/1gTi-0xjDjbVUK_p_AzkZrw
    提取码:1234

2、数据预处理:

  • 拿到数据后把数据解压到和代码同一级的目录当中
  • 这部分重点是把图片数据转换为可以输入模型的二维数组型数据
  • 用到的函数解答:
    • plt.imshow()函数是matplotlib库中的一个函数,它用于显示图像。这个函数接受一个二维或三维的数组作为输入,表示图像的数据。然后,它将数组的值映射到颜色空间,以显示图像。在plt.imshow()函数中,cmap是一个参数,代表色彩映射(colormap)。在图像处理中,我们通常将图像表示为一个二维数组,数组的每个元素代表图像的一个像素。每个像素的值通常是一个介于0和255之间的整数,表示该像素的灰度级别。然而,我们通常不能直接看到这些数字,因为它们在视觉上可能没有明显的差别。相反,我们通常将每个像素的值映射到一个连续的色彩空间,这样我们就可以在屏幕上显示图像了。有许多不同的colormap可以选择,比如:‘gray’:灰度colormap、‘hot’:红色到白色的热图colormap、‘cool’:蓝色到绿色的colormap、‘Jet’:从蓝色到红色的colormap、‘hsv’:HSV色彩空间的colormap。
  • 代码
# 尝试从文件中读一个数据出来
img = plt.imread('./手写数字识别/0/0_1.bmp')
display(img.shape) # img是一个二维数组
plt.imshow(img,cmap='gray')

机器学习——手写数字识别,机器学习与深度学习,numpy

3、实现:

  • 代码
# 批量导入5000个图片数据
data = [] # 分类模型输入数据
target = [] # 分类模型输出数据

for i in range(10):
    for j in range(1,501):
        img = plt.imread(f'./手写数字识别/{i}/{i}_{j}.bmp')
        data.append(img)
        target.append(i)
# 此时data和target作为列表数据运算起来非常耗内存,所以先转为数组形式的数据方便处理,然后再改变维度
data = np.array(data).reshape(5000, -1)
target = np.array(target).reshape(5000, -1)
print('data的形状:',data.shape,'target的形状:',target.shape)

# 数据划分为训练集和测试集
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(data,target,test_size=0.2) # 20%的测试集

# 导入模型
from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier()

# 训练数据
knn.fit(x_train,y_train)

# 查看模型得分,如果是pycharm就把下面代码放到print中
knn.score(x_test,y_test)
  • 该模型最终结果为0.93
  • 对结果进行可视化
# 随机挑选10个测试值画图查看预测结果
choice = np.random.randint(1,1000,10).tolist()
# 设置画布大小
plt.figure(figsize=(5*10,2*10))

for i in range(10):
    # 画子图
    re = plt.subplot(2,5,i+1)
    re.imshow(x_test[choice[i]].reshape(28,-1),cmap='gray')
     re.set_title(f'real:{y_test[choice[i]][0]},\npredict:{y_pred[choice[i]]}',fontsize=40,
                color = 'k' if y_test[choice[i]][0] == y_pred[choice[i]] else 'r')

机器学习——手写数字识别,机器学习与深度学习,numpy文章来源地址https://www.toymoban.com/news/detail-691507.html


4、补充:

  • 如果在划分了数据集之后,要显示test当中的一个图片,应该先把图片数据变回原来的维度,然后再显示
    机器学习——手写数字识别,机器学习与深度学习,numpy
  • 关于如何改变数组维度的问题
    机器学习——手写数字识别,机器学习与深度学习,numpy

到了这里,关于机器学习——手写数字识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习/人工智能】 大作业:手写数字识别系统

    参考的是https://zh.d2l.ai/index.html 代码运行的相关实操移步视频https://www.bilibili.com/video/BV1XP411C7Hs/ (1)利用所学习的聚类算法完成简单的图像分割系统。 (2)编程并利用相关软件完成大作业测试,得到实验结果。 (3)通过对实验结果的分析得出实验结论,培养学生创新思维和

    2024年02月02日
    浏览(45)
  • 【10个适合新手的人工智能项目 - 02】手写数字识别:使用Python和机器学习算法,编写一个手写数字识别程序,能够识别手写数字图像并将其转换为数字。

    为了编写一个手写数字识别程序,我们需要使用Python编程语言和一些机器学习算法。在这个项目中,我们将使用深度学习神经网络模型,它被广泛应用于图像识别任务。 以下是手写数字识别程序的基本步骤: 首先,我们需要一个数据集,用于训练和测试我们的模型。一个常

    2024年02月03日
    浏览(37)
  • 机器学习实战 | MNIST手写数字分类项目(深度学习初级)

    准备写个系列博客介绍机器学习实战中的部分公开项目。首先从初级项目开始。 本文为初级项目第二篇:利用MNIST数据集训练手写数字分类。 项目原网址为:Deep Learning Project – Handwritten Digit Recognition using Python。 第一篇为:机器学习实战 | emojify 使用Python创建自己的表情符号

    2024年02月15日
    浏览(35)
  • 从手写数字识别入门深度学习丨MNIST数据集详解

    就像无数人从敲下“Hello World”开始代码之旅一样,许多研究员从“MNIST数据集”开启了人工智能的探索之路。 MNIST数据集(Mixed National Institute of Standards and Technology database)是一个用来训练各种图像处理系统的二进制图像数据集,广泛应用于机器学习中的训练和测试。 作为一

    2024年02月03日
    浏览(31)
  • python与深度学习(六):CNN和手写数字识别二

    本篇文章是对上篇文章训练的模型进行测试。首先是将训练好的模型进行重新加载,然后采用opencv对图片进行加载,最后将加载好的图片输送给模型并且显示结果。 在这里导入需要的第三方库如cv2,如果没有,则需要自行下载。 把MNIST数据集进行加载,并且把训练好的模型也

    2024年02月15日
    浏览(26)
  • 机器学习从入门到放弃:硬train一发手写数字识别

    一、前言 前面我们了解了关于机器学习使用到的数学基础和内部原理,这一次就来动手使用 pytorch 来实现一个简单的神经网络工程,用来识别手写数字的项目。自己动手后会发现,框架里已经帮你实现了大部分的数学底层逻辑,例如数据集的预处理,梯度下降等等,所以只要

    2024年02月06日
    浏览(56)
  • 深度学习:使用卷积神经网络CNN实现MNIST手写数字识别

    本项目基于pytorch构建了一个深度学习神经网络,网络包含卷积层、池化层、全连接层,通过此网络实现对MINST数据集手写数字的识别,通过本项目代码,从原理上理解手写数字识别的全过程,包括反向传播,梯度下降等。 卷积神经网络是一种多层、前馈型神经网络。从功能上

    2024年02月13日
    浏览(33)
  • 【深度学习实战—1】:基于Keras的手写数字识别(非常详细、代码开源)

    ✨博客主页:王乐予🎈 ✨年轻人要:Living for the moment(活在当下)!💪 🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】    本来想着多更新一些关于深度学习的文章,但这方面知识专业度很高,如果作者本身都掌握不好,又怎么能写出好文章分享

    2024年02月07日
    浏览(31)
  • 人工智能概论报告-基于PyTorch的深度学习手写数字识别模型研究与实践

    本文是我人工智能概论的课程大作业实践应用报告,可供各位同学参考,内容写的及其水,部分也借助了gpt自动生成,排版等也基本做好,大家可以参照。如果有需要word版的可以私信我,或者在评论区留下邮箱,我会逐个发给。word版是我最后提交的,已经调整统一了全文格

    2024年02月05日
    浏览(49)
  • 入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

    1.1 问题导入 如图所示,数字五的图片作为输入,layer01层为输入层,layer02层为隐藏层,找出每列最大值对应索引为输出层。根据下图给出的网络结构搭建本案例用到的全连接神经网络 1.2 手写字数据集MINST 如图所示,MNIST数据集是机器学习领域中非常经典的一个数据集,由6

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包