java手写识别_手写识别系统

该博客介绍了如何利用k-近邻(k-NN)算法实现手写数字识别系统。通过读取和处理图像数据,将其转化为可用于分类的向量,并运用k-NN算法进行训练和测试,计算错误率。最后提供了完整的Python代码实现。
摘要由CSDN通过智能技术生成

目的

采用k-近邻算法实现手写识别系统。这里采用0和1组成数字0-9的形状,再用算法对这些形状进行识别,来分辨出形状属于0-9那个数字。并计算出k-近邻算法识别手写数字的错误率。

数据说明

数据来自《机器学习实战》,分为测试集和训练集。单个数据如下图所示,表示数据0。

1ac9fce75825cd7793b7391b08b104cc.png

算法过程

收集数据:提供文本文件。

准备数据:编写函数classify0() ,将图像格式转换为分类器使用的制格式。

分析数据:在Python命令提示符中检查数据,确保它符合要求。

训练算法:此步驟不适用于k-近邻算法。

测试算法:编写函数使用提供的部分数据集作为测试样本,测试样本与非测试样本的区别在于测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。

使用算法

准备数据:将图像转换为测试向量

def img2vector(filename):

"""

该函数创建1*1024的NumPy数组,然后打开给定的文件,循环读出文件的前32行。

并将每行的头32个字符值存储在NumPy数组中,然后返回数组

"""

return_vect = np.zeros((1, 1024))

fr = open(filename)

for i in range(32):

line_str = fr.readline()

for j in range(32):

return_vect[0, 32*i+j] = int(line_str[j])

return return_vect

测试算法:使用k-近邻算法识别手写数字

def hand_writing_class_test():

"""

手写数字识别系统的测试代码<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值