手写识别KNN
简单识别手写数字0-9,图像被处理成32*32的黑白图像,并保存为文本格式
img =open('0_0.txt')
for line in img.readlines():
print(line)
00000000000001100000000000000000
00000000000011111100000000000000
00000000000111111111000000000000
00000000011111111111000000000000
00000001111111111111100000000000
00000000111111100011110000000000
00000001111110000001110000000000
00000001111110000001110000000000
00000011111100000001110000000000
00000011111100000001111000000000
00000011111100000000011100000000
00000011111100000000011100000000
00000011111000000000001110000000
00000011111000000000001110000000
00000001111100000000000111000000
00000001111100000000000111000000
00000001111100000000000111000000
00000011111000000000000111000000
00000011111000000000000111000000
00000000111100000000000011100000
00000000111100000000000111100000
00000000111100000000000111100000
00000000111100000000001111100000
00000000011110000000000111110000
00000000011111000000001111100000
00000000011111000000011111100000
00000000011111000000111111000000
00000000011111100011111111000000
00000000000111111111111110000000
00000000000111111111111100000000
00000000000011111111110000000000
00000000000000111110000000000000
1.数据准备:图像转换成向量
from numpy import *
import operator
from os import listdir
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
img_arr =img2vector('0_0.txt')
img_arr
array([[0., 0., 0., ..., 0., 0., 0.]])
2.测试算法:用K-邻近算法识别手写数字
- 分类器
def 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.items(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
- 手写系统测试代码
def handwritingClassTest():
hwLabels = []
trainingFileList = listdir('trainingDigits') #加载训练集
m = len(trainingFileList)
trainingMat = zeros((m,1024))
for i in range(m):
fileNameStr = trainingFileList[i]
fileStr = fileNameStr.split('.')[0] #去除.txt
classNumStr = int(fileStr.split('_')[0])
hwLabels.append(classNumStr)
trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)
testFileList = listdir('testDigits') #准备测试集
errorCount = 0.0
mTest = len(testFileList)
for i in range(mTest):
fileNameStr = testFileList[i]
fileStr = fileNameStr.split('.')[0] #去除.txt
classNumStr = int(fileStr.split('_')[0])
vectorUnderTest = img2vector('testDigits/%s' % fileNameStr)
classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
print("分类器返回: %d, 实际值为: %d" % (classifierResult, classNumStr))
if (classifierResult != classNumStr): errorCount += 1.0
print("\n总共错误个数: %d" % errorCount)
print("\n正确率: %f" % (1-errorCount/float(mTest)))
handwritingClassTest()
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 0, 实际值为: 0
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 7, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 1, 实际值为: 1
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 2, 实际值为: 2
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 9, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 3, 实际值为: 3
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 4, 实际值为: 4
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 3, 实际值为: 5
分类器返回: 6, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 5, 实际值为: 5
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 6, 实际值为: 6
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 7, 实际值为: 7
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 6, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 3, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 1, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 1, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 8, 实际值为: 8
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 1, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 7, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
分类器返回: 9, 实际值为: 9
总共错误个数: 10
正确率: 0.989429
可以见到之前的读取的第一章图片的识别结果为0,整体识别精度为98%
总结
** KNN算法是基于实例学习,需要大量的正确数据,因为需要保存全部数据集,十分占空间,需要计算每个数据的值,数据量变大时非常耗时。还有个缺点是没法从数据中获取特征,因此需要通过概率的方式确定样本的特征 **