手写识别KNN

手写识别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算法是基于实例学习,需要大量的正确数据,因为需要保存全部数据集,十分占空间,需要计算每个数据的值,数据量变大时非常耗时。还有个缺点是没法从数据中获取特征,因此需要通过概率的方式确定样本的特征 **

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值