MNIST手写数字图像分类 - Naive Bayes Classifier

本文介绍了如何使用Naive Bayes分类器处理MNIST手写数字图像识别问题。从数据集介绍、读取到模型训练、预测和改进,包括数据处理和模型选择,探讨了不同方法对识别准确率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MNIST手写数字图像分类 - Naive Bayes Classifier

引入

在上一篇手写Naive Bayes分类器中,我们成功用自己写的 Naive Bayes 分类器处理了医疗记录数据。那我们的分类器能否用来处理其他类型的数据呢?答案当然是 可! 以! 的!在本次的实验中,我们将尝试一下处理图像数据。有木有很酷炫呢,那就一起搞起来吧!

实际问题

对于我们人类来说,识别手写数字并不是什么太大的问题。但是我们能否让机器也拥有识别手写数字的能力呢?下面我们就要在MNIST数据集上建立 Naive Bayes 分类器,教会机器识别手写数字。

MNIST介绍

MNIST其实是一个被广大人民群众用来练手的数据集,广到搜索引擎搜MNIST就会有大量相关的教程(手动微笑)。言归正传,MNIST中的每个图像由28*28个像素点组成,整个数据集一共包含了60000个训练样本和10000个测试样本,label有10个(0-9)。没错,它已经很贴心的分好了训练和测试。所以打开MNIST会发现有4个文件,分别是训练的image和label,测试的image和label。

MNIST读取

文件下下来以后,定睛一看,发现事情并不简单,它的后缀竟然是".gz"。不必惊慌,这就来解决这个问题。数据的读取方式请参考这里
我们实际需要写的代码如下:

from mnist import MNIST 
mndata = MNIST('保存四个文件的目录')
images,labels = mndata.load_training()
test_images,test_labels = mndata.load_testing()

为了更直观的了解数据集,咱们直接搞一个例子出来看一下:

import numpy as np
import matplotlib.pyplot as plt
p = np.array(images[9], dtype='uint8') 
p = p.reshape((28, 28))
plt.imshow(p, cmap='gray')
plt.show()

an example from MNIST
一张不过瘾,我们把所有类的平均图像做出来看一下:
mean image

实现

数据了解的差不多,我们可以想一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值