机器学习实战之程序清单1-kNN(手写数字识别系统)
来源:互联网 发布:冒险岛数据库查询器 编辑:程序博客网 时间:2024/05/20 23:34
本文上接机器学习实战之程序清单1-kNN(约会网站)
程序清单2-6 手写识别系统
点此下载所需的数据集trainingDigits/testDigits
#注意这里原书用的listdir()方法python3不支持,需要先引入os包(import os),再调用os.listdir()#此函数将32*32的二进制图像转换成1*1024的向量def img2vector(filename): #定义一个1*1024的向量returnVect 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#程序清单2-6 手写识别系统的测试代码def handwritingClassTest():#以下为训练数据的矩阵化 hwLabels = [] #遍历目录,得到trainingDigits内所有文件名 trainingFileList = os.listdir('trainingDigits') m = len(trainingFileList) trainingMat = zeros((m,1024)) for i in range(m): fileNameStr = trainingFileList[i] #得到.的前面部分,即去掉后缀名 fileStr = fileNameStr.split('.')[0] #得到文件名第一个数字,代表图片里的数字 classNumStr = int(fileStr.split('_')[0]) #放入标签里 hwLabels.append(classNumStr) #调用img2vector(filename) 传入文件名得到向量 trainingMat[i,:] = img2vector('trainingDigits/%s'% fileNameStr)#以下和上面类似,测试数据的矩阵化 #得到测试文件目录内的文件名 testFileList = os.listdir('testDigits') errorCount = 0.0 mTest = len(testFileList) print(mTest) for i in range(mTest): fileNameStr = testFileList[i] #得到.的前面部分,即去掉后缀名 fileStr = fileNameStr.split('.')[0] #得到文件名第一个数字,代表图片里的数字 classNumStr = int(fileStr.split('_')[0]) #调用img2vector(filename) 传入文件名得到向量 vectorUnderTest = img2vector('testDigits/%s'% fileNameStr) #调用kNN算法函数,得到分类结果 classifierResult = classify0(vectorUnderTest,trainingMat,hwLabels,3) #打印结果 print("the classifier came back with :%d,the real answer is :%d"% (classifierResult,classNumStr)) #判断测试结果是否准确,错误则errorCount+1 if(classifierResult != classNumStr): errorCount += 1.0 print("the total error rate is: %f" %(errorCount/float(mTest)))
运行它与前一篇文章相同,在main.py内加上 kNN.handwritingClassTest() 再运行即可。
以上。
阅读全文
0 0
- 机器学习实战之程序清单1-kNN(手写数字识别系统)
- 机器学习--knn手写数字识别系统
- Python机器学习实战之kNN手写识别系统
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战k近邻算法(kNN)应用之手写数字识别代码解读
- 机器学习-kNN实现简单的手写数字识别系统
- [机器学习案例1]基于KNN手写数字识别
- [机器学习案例1]基于KNN手写数字识别
- 机器学习实战之程序清单1-kNN(约会网站)
- KNN--用于手写数字识别(机器学习入门笔记)
- KNN--用于手写数字识别(机器学习入门笔记)
- 【10月23日】机器学习实战(一)KNN算法:手写识别系统
- 机器学习实战之k-近邻算法(6)---手写数字识别系统(0-9识别)
- 机器学习xgboost实战—手写数字识别 (DMatrix)
- 机器学习实战笔记——基于KNN算法的手写识别系统
- 机器学习实战—k近邻算法(kNN)03-手写识别系统
- Centos7安装Shadowsocks并支持chacha20且开启bbr
- 机器学习笔记
- 落尘曦的博客打赏名单
- 将方法作为参数传递(Javascript/Ruby)
- C和C++中内存分配和释放使用介绍
- 机器学习实战之程序清单1-kNN(手写数字识别系统)
- Java方法对传递参数的处理
- JZOJ5400. 【NOIP2017提高A组模拟10.7】Repulsed 树型DP+贪心
- 快速解决centos7的防火墙问题
- golang fmt格式化字符串%v,%T
- IO多路复用之select全面总结(必看篇)
- 心路历程(绪论)
- 洛谷1489 猫狗大战
- 剑指offer之十八---顺时针打印矩阵