# Handwritten-Digits-Recognition-by-KNN
通过KNN算法对本地的手写数据集进行分类
## 各文件说明:
- KNN_HandByHand.ipynb为手动实现的KNN算法
- KNN_sklearn.ipynb为通过sklearn模块实现的KNN算法
- kNN_hand_writing.tgz为对应的手写数据集压缩包
- requirements.txt为环境配置文件
## 数据集说明
本项目所用的手写数字数据集分为训练集和测试集:
- 训练集包含了1934个手写数字的样本,样本的内容是32*32的二值图像,保存在txt文件中。
- 测试集包含了946个手写数字的样本,样本的内容是32*32的二值图像,保存在txt文件中。
下面是一个手写数字0的样本示例:
```
00000000000001111000000000000000
00000000000011111110000000000000
00000000001111111111000000000000
00000001111111111111100000000000
00000001111111011111100000000000
00000011111110000011110000000000
00000011111110000000111000000000
00000011111110000000111100000000
00000011111110000000011100000000
00000011111110000000011100000000
00000011111100000000011110000000
00000011111100000000001110000000
00000011111100000000001110000000
00000001111110000000000111000000
00000001111110000000000111000000
00000001111110000000000111000000
00000001111110000000000111000000
00000011111110000000001111000000
00000011110110000000001111000000
00000011110000000000011110000000
00000001111000000000001111000000
00000001111000000000011111000000
00000001111000000000111110000000
00000001111000000001111100000000
00000000111000000111111000000000
00000000111100011111110000000000
00000000111111111111110000000000
00000000011111111111110000000000
00000000011111111111100000000000
00000000001111111110000000000000
00000000000111110000000000000000
00000000000011000000000000000000
```
## 数据预处理的思路
因为本项目所用的KNN算法要求输入的数据是一个m行n列的矩阵,其中m行代表样本总数,每一行代表一个手写数字的数据;n列代表特征总数,这里面一个手写数字一共有32*32=1024个特征。
所以数据预处理的大致思路是:依次遍历所有手写数字的数据,读取出里面的内容,并转换成1行1024列的向量,最后把所有数据拼成一个m行1024列的矩阵。
## 其他实现流程已经在python文件里面做了详细的注释,这里不再说明
<div align="center">
<img src="https://github.com/LUORANCHENG/Handwritten-Digits-Recognition-by-KNN/blob/main/%E6%8A%A5%E5%91%8A/webwxgetmsgimg.gif" width="400" >
</div>
普通网友
- 粉丝: 1127
- 资源: 5293
最新资源
- 使用Java语言编写的九格拼游戏,找寻下曾经小时候的记忆.zip
- gakataka课堂管理系统
- 一个简单ssh(spring springMVC hibernate)游戏网站,在网上找的html模板,没有自己写UI,重点放在java后端上.zip
- 一个采用MVC架构设计、Java实现的泡泡堂游戏.zip
- 一个简易的对对碰游戏软件,运用Java、Java FX技术.zip
- 通过binder实现进程间通讯 ,可以使用service的binder或者 AIDL生成的Stub返回binder 实现demo
- 44f2abdbd6faa9938f9d8e4cace85309.JPG
- 一个简易的躲避子弹飞机小游戏,基于最简单的java ui.zip
- 一个西洋跳棋小游戏,写成桌面Java程序,实现了人机对战,对博弈树的遍历进行了极大极小值的alpha-beta剪枝算法进行优化.zip
- 一些java的小游戏项目,贪吃蛇啥的.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈