手写识别系统,KNN算法实现手写识别系统的准确率
(准确率=测试分对的样本数/总的样本数)

import numpy as np
from itertools import chain
from os import listdir#返回给定目录下的文件名,返回的是一个字符串列表
import operator
#想使用KNN算法,训练集以及训练集的标签,找到训练集以及训练集的标签
#KNN算法,每一次对一个点进行分组def classify0(inx,dataset,labels,k):#KNN算法第二步:计算未知点到所有已知类别点的距离datasetSize=dataset.shape[0]#shape西数读取矩阵的长度,返回的是一个元组,(行数, 列数)diffMat=np.tile(inx,(datasetSize,1))-datasetsqDiffMat=diffMat**2# print(sqDiffMat)sqDistance=sqDiffMat.sum(axis=1)# print(sqDiffMat. sum(axis=0) )distance=np.sqrt(sqDistance)sortedDistance=distance.argsort()dict={}for i in range(k):votelable=labels[sortedDistance[i]]#字典里面添加元素dict[key]=value,三种:key:value, get方法,setdefaultdict[votelable]=dict.get(votelable,0)+1#距离测试点最近的k个点的标签sortedDict=sorted(dict.items(),key=operator.itemgetter(1),reverse=True)# print(sortedDict)return sortedDict[0][0]hwlables=[]#存放训练集的标签
traingFileList=listdir('trainingDigits')#返回训练集文件夹下面所有的文件名
#print( traingFileList)
m=len(traingFileList)#训练集的样本点个数,是训练集矩阵的行数
trainingMat=np.zeros((m,1024))#行数的确定以及列数的确定
for i in range(m):fileNameStr=traingFileList[i]#训练集文件夹下面对应索引为i的文件名fileStr=fileNameStr.split(',')[0]#print(fileStr)classNumberStr=int(fileStr.split('_')[0])#print(classNumberStr)hwlables.append(classNumberStr)trainingMat[i]=list(chain(*np.genfromtxt('trainingDigits/%s'%fileNameStr,delimiter=1)))#训练集#找到训练集,以及为了计算正确率,还需要测试集的标签
testFileList=listdir("testDigits")
mTest=len(testFileList)
errcount=0
real=0
for i in range(mTest):fileNameStr=testFileList[i]fileStr=fileNameStr.split('.')[0]classNumberStr=int(fileStr.split('_')[0])#测试点得标签,测试点得数据VectorUnderTest=list(chain(*np.genfromtxt('testDigits/%s'%fileNameStr,delimiter=1)))classifierResult=classify0(VectorUnderTest,trainingMat,hwlables,3) #KNN算法得到分类后的结果# print("分类器分类的结果为: %d,实际得标签,为%d "%(classifierResult,classNumberStr))if classifierResult != classNumberStr:errcount += 1else:real+=1print('测试的样本点个数:%f'%mTest)
print('实际发生错误的次数为:%f'%errcount)
print('错误率为:%f'%(errcount/mTest))
print('准确率为:%f'%(real/mTest))

knn算法测试手写识别系统准确率相关推荐

  1. 【Python】基于kNN算法的手写识别系统的实现与分类器测试

    基于kNN算法的手写识别系统 1.      数据准备 使用windows画图工具,手写0-9共10个数字,每个数字写20遍,共200个BMP文件. 方法如下,使用画图工具,打开网格线,调整像素为32 ...

  2. Knn算法之手写识别系统

    knn值之手写识别系统 导入包 import numpy as np from os import listdir import operator 介绍 1.os模块 os.listdir() 方法用 ...

  3. 【机器学习实战】k近邻算法实战——手写识别系统

    文章目录 手写识别系统 步骤: 准备数据:将图像转换为测试向量 测试算法:使用k-近邻算法识别手写数字 [完整代码] 手写识别系统 为了简单起见,这里构造的系统只能识别数字0到9,参见图2-6.需要识 ...

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

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

  5. kNN算法实现手写数字识别(机器学习)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.实验步骤 二.实验过程 1.收集数据:提供文本文件 2.准备数据:将图像转换为测试向量 3.测试算法:使用k-近邻 ...

  6. 机器学习入门-kNN算法实现手写数字识别

    实验环境 Python:3.7.0 Anconda:3-5.3.1 64位 操作系统:win10 开发工具:sublime text(非必要) 简介 本次实验中的重点为采用kNN算法进行手写数字识别, ...

  7. 机器学习算法(一):k-近邻理论与python实现+经典应用(约会网站匹配、手写识别系统)

    一份算法学习笔记~ 亲爱的朋友,恭喜你点开神秘之门,哈哈哈哈!从这里开始,我们一起学习机器学习的经典算法吧. 这一次的主要内容是机器学习入门算法:k-近邻.理论相当好理解,下面我们正式开始啦! 算法简 ...

  8. python实现手写识别系统

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.手写识别系统 二.主要步骤 1.准备数据:将图像转换为测试向量 2.测试算法:使用k-近邻算法识别手写数字 总结 ...

  9. 机器学习实战-手写识别系统

    在实现了K近邻算法后,书中给出了一个实例,今天来学习一下使用K近邻分类器的手写识别系统.书中原带的文件已经过处理转换为了文本格式,方便了许多. 先看一下原带文件 准备数据 #将图像转换为测试向量 de ...

最新文章

  1. illegal base64 character 3a_双11华硕多款产品再送豪礼 高端硬件通吃最新3A大作
  2. python有哪些作用-你都用Python来做什么,它对你来说有什么作用?
  3. url加密解密的一个cs类
  4. 如何实现两列等高效果?
  5. HTML5之本地存储localstorage
  6. 「PDF Expert」macOS 全能型 PDF 工具——功能介绍
  7. 这款工具不用手写一行代码就能做出网站!
  8. FTP服务器vsftpd配置详解
  9. 读书笔记《Unix编程艺术》一
  10. js实现word生成书签_javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印...
  11. cbv本质,前后端交互编码方式,django模板使用的2种方式,模板语法
  12. 复制文件夹 omitting directory
  13. 服务器显示checkin,CheckIn 方法 - Microsoft Word Visual Basic 参考
  14. Linux 网桥代码分析 六 网桥数据转发函数分析
  15. 他看了几千份技术简历,愿意把技术简历的秘籍传授给你
  16. 服务器系统xb21cn,Office2010/2016精简三合一版(xb21cn-0901版)
  17. 基于Modis数据监测森林火灾
  18. 【记录】河北张家口人事档案所在查询 以及【报到证】补办
  19. 中国移动4月底推飞信开放平台
  20. 现在当兵有什么待遇复原以后_大学生当兵有什么好处 退伍后待遇怎么样

热门文章

  1. Spring和Spring Mvc整合详解
  2. sp工具中最疼的是_阴阳师:SP缚骨清姬技能建模解读,另有伴生皮肤黛色寒青...
  3. 前端笔试分类题(常用算法篇)
  4. 《使用CSS格式化布局——页面布局》
  5. show full processlist;命令详解 - MySQL
  6. 微信公众号点击菜单出现多条文章
  7. 勘探开发一体化油藏综合描述Petrel.2013.2.Win64-ISO 1DVD
  8. Android notification不能随系统语言切换而更新
  9. Python前景如何?学会Python工作好找吗?
  10. Android获取手机系统软件图标,名称等