KNN算法实现手写识别系统
来源:互联网 发布:淘宝设置发货地 编辑:程序博客网 时间:2024/05/02 05:06
'''Created on 2015-3-13@author: lzy'''from numpy import *import operatorfrom os import listdirdef classify0(inX,dataSet,labels,k): dataSetSize = dataSet.shape[0] diffMat = tile(inX, (dataSetSize,1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 sortedDistIndicies = distances.argsort() classCount={} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]def image2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i in range(32): linestr = fr.readline() for j in range(32): returnVect[0,i*32 + j] = int(linestr[j]) return returnVectdef handwritingClassTest(): hwLabels = [] trainingFileList = 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) trainingMat[i,:] = image2vector('trainingDigits/%s' % filenameStr) testFileList = listdir('testDigits') errorCount = 0.0 mTest = len(testFileList) for i in range(mTest): filenameStr = testFileList[i] fileStr = filenameStr.split('.')[0] classNumStr = int(fileStr.split('_')[0]) vectorUnderTest = image2vector('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 "the total error rate is %f" % (errorCount / float(mTest)) handwritingClassTest()
运行结果:the total error rate is 0.011628
classifiy0实现了KNN分类算法;image2vector是将图片转换为一维向量的形式,这里的图像是经过处理的32像素*32像素的黑白图像;handwritingClassTest则是训练数据、预测数据;该算法的准确率为0.011628。
numpy.tile(A,reps)是把A重复reps次来构造数组;
argsort函数返回的是数组值从小到大的索引值
from os import listdir 这段代码的主要功能是从os模块中导入函数listdir,它可以列出给定目录的文件名。
0 0
- KNN算法实现手写识别系统
- knn算法实现的数字手写识别
- Python实现KNN算法手写识别数字
- Python实现knn算法手写数字识别
- KNN算法-手写识别
- knn-2 利用knn算法实现手写数字识别
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试
- 使用Knn算法实现手写数字识别系统(附带jpg转txt代码)
- KNN算法 手写识别 python
- kNN算法python代码学习2-手写识别系统
- 机器学习-kNN实现简单的手写数字识别系统
- 【机器学习】Knn算法实现手写数字识别
- 学习KNN(二)KNN算法手写数字识别的OpenCV实现
- 机器学习--knn手写数字识别系统
- Python 手写数字识别-knn算法应用
- kNN算法_手写识别实例
- KNN算法实例---手写数字识别
- 使用kNN算法识别手写数字
- JMM导读
- Eclipse Java注释模板设置详解
- html块状元素和行内元素
- #个人赛第一场解题总结#
- COM组件学习笔记--C++模板
- KNN算法实现手写识别系统
- P27 6
- 在win7下优盘安装ubuntu组成双系统,多图。。。
- Linux学习笔记(3-13)共享文件夹
- Use UIGestureRecognizer to handle single tap and double tap
- Spring配置文件详解 - applicationContext.xml文件路径
- mininet的中文教程学习
- c++控制台(非窗口,非MFC框架)里线程如何通过自定义消息通信
- POJ 3258 River Hopscotch