机器学习实战笔记——基于KNN算法的手写识别系统
来源:互联网 发布:了解兵马俑 知乎 编辑:程序博客网 时间:2024/05/26 19:16
本文主要利用k-近邻分类器实现手写识别系统,训练数据集大约2000个样本,每个数字大约有200个样本,每个样本保存在一个txt文件中,手写体图像本身是32X32的二值图像,如下图所示:
首先,我们需要将图像格式化处理为一个向量,把一个32X32的二进制图像矩阵通过img2vector()函数转换为1X1024的向量:
def img2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i in range(32): lineStr = fr.readline() for j in range(32): returnVect[0,32*i+j] = int(lineStr[j]) return returnVect
手写数字识别系统的测试代码:
def handwritingClassTest(): hwLabels = [] trainingFileList = listdir('trainingDigits') #load the training set m = len(trainingFileList) trainingMat = zeros((m,1024)) for i in range(m): fileNameStr = trainingFileList[i] fileStr = fileNameStr.split('.')[0] #take off .txt classNumStr = int(fileStr.split('_')[0]) hwLabels.append(classNumStr) trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr) testFileList = listdir('testDigits') #iterate through the test set errorCount = 0.0 mTest = len(testFileList) for i in range(mTest): fileNameStr = testFileList[i] fileStr = fileNameStr.split('.')[0] #take off .txt classNumStr = int(fileStr.split('_')[0]) vectorUnderTest = img2vector('testDigits/%s' % fileNameStr) classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3) print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr) if (classifierResult != classNumStr): errorCount += 1.0 print "\nthe total number of errors is: %d" % errorCount print "\nthe total error rate is: %f" % (errorCount/float(mTest))
在Python命令提示符中输入kNN.handwritingClassTest(),测试该函数的输出结果:
注:本文的相关代码均来源于Peter Harringtor的《机器学习实战》
1 0
- 机器学习实战笔记——基于KNN算法的手写识别系统
- 机器学习实战—k近邻算法(kNN)03-手写识别系统
- 学习笔记——《机器学习实战》KNN算法实现 约会网站测试,手写数字识别,代码,注释,错误修改
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 《机器学习实战》-kNN算法手写算法识别
- Python机器学习实战之kNN手写识别系统
- 【10月23日】机器学习实战(一)KNN算法:手写识别系统
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战—笔记-kNN算法
- 机器学习(3)——KNN算法及手写数字的识别(一)
- 机器学习(4)——KNN算法及手写数字的识别(二)
- 机器学习--knn手写数字识别系统
- 机器学习-kNN实现简单的手写数字识别系统
- 如何选择合适的买入时间
- p243 7题
- SpringMvc (二) 通过URL限定:URL表达式/模拟请求方法/注解绑定方法参数/入参方式
- 大数据认知阶段——虚拟机Ubuntu上网方式配置(Bridge、NAT、host-only)
- android shape使用总结
- 机器学习实战笔记——基于KNN算法的手写识别系统
- Android 实现瀑布流的两种思路
- 近200篇机器学习及深度学习的资料分享
- iOS后台运行NSTimer
- Xcode7 创建HTTP网络请求时出现bug
- 转换数组使奇数位为奇数 偶数位为偶数
- 浅谈操作系统进程的引出
- iOS开发之宏的深度学习
- ubuntu修改grub,删除多余启动项