热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习实战笔记K近邻算法3(手写识别系统)

1准备数据:将图像转换为测试向量这次数据集还是有两种,训练数据集和测试数据集,分别有2000个,900个。我们将把一个32*32的二进制图像矩阵转换为1x1024的向量,这样前两节

1 准备数据:将图像转换为测试向量
这次数据集还是有两种,训练数据集和测试数据集,分别有2000个,900个。
我们将把一个32*32的二进制图像矩阵转换为1 x 1024的向量,这样前两节使用的分类器就可以处理数字图像信息了。
代码:

def img2vector(filename): 
returnVect = zeros((1,1024))
file = open(filename)
for i in range(32):
line = file.readline()
for j in range(32):
returnVect[0,i*32+j] = line[j]
return returnVect

 


效果截图:
机器学习实战笔记-K近邻算法3(手写识别系统)
测试算法
代码:

def handWritingTest(): 
hwLabels = []
trainingFileList = os.listdir('trainingDigits')
trainingFileLength = len(trainingFileList)
trainingMat = zeros((trainingFileLength,1024))
for i in range(trainingFileLength):
fileNameStr = trainingFileList[i]
className = fileNameStr.split('_')[0]
hwLabels.append(int(className))
fileVector = img2vector('trainingDigits/' + fileNameStr)
trainingMat[i,:] = fileVector
testFileList = os.listdir('testDigits')
testFileLength = len(testFileList)
errorCount = 0.0
for i in range(testFileLength):
fileNameStr = testFileList[i]
className = int(fileNameStr.split('_')[0])
fileVector = img2vector('testDigits/' + fileNameStr)
testResult = classify0(fileVector,trainingMat,hwLabels,3)
print("the classifier came back with: %d, the real answer is: %d" % (testResult,className))
if(testResult != className):
errorCount+=1.0
errorRate = errorCount/float(testFileLength)
print("the errorRate is : %f" % errorRate)

结果截图:
机器学习实战笔记-K近邻算法3(手写识别系统)

分别将k改为4,5:
机器学习实战笔记-K近邻算法3(手写识别系统)
机器学习实战笔记-K近邻算法3(手写识别系统)
可以发现错误率逐渐增高


推荐阅读
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文详细介绍了如何在PHP中删除数组中的指定元素、第一个元素和最后一个元素,并提供了具体的代码示例和相关函数的使用说明。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • C/C++ 指针操作解析:双向链表中元素的取消链接
    本文详细解释了在C语言中使用指针进行双向链表元素取消链接的操作,探讨了`next->prev`和`prev`之间的关系,并提供了代码示例和可视化辅助理解。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
author-avatar
横店东磁何静
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有