资源简介

基于Python3.7实现手写识别功能,调用KNN算法。包括源程序、训练数据、测试数据和测试结果。

资源截图

代码片段和文件信息

# coding=gbk
import numpy as np     #导入numpy工具包
from os import listdir #使用listdir模块,用于访问本地文件
from sklearn import neighbors
 
def img2vector(fileName):    
    retMat = np.zeros([1024]int) #定义返回的矩阵,大小为1*1024
    fr = open(fileName)           #打开包含32*32大小的数字文件 
    lines = fr.readlines()        #读取文件的所有行
    for i in range(32):           #遍历文件所有行
        for j in range(32):       #并将01数字存放在retMat中     
            retMat[i*32+j] = lines[i][j]    
    return retMat
 
def readDataSet(path):    
    fileList = listdir(path)    #获取文件夹下的所有文件 
    numFiles = len(fileList)    #统计需要读取的文件的数目
    dataSet = np.zeros([numFiles1024]int)    #用于存放所有的数字文件
    hwLabels = np.zeros([numFiles])#用于存放对应的标签(与神经网络的不同)
    for i in range(numFiles):      #遍历所有的文件
        filePath = fileList[i]     #获取文件名称/路径   
        digit = int(filePath.split(‘_‘)[0])   #通过文件名获取标签     
        hwLabels[i] = digit        #直接存放数字,并非one-hot向量
        dataSet[i] = img2vector(path +‘/‘+filePath)    #读取文件内容 
    return dataSethwLabels
 
#read dataSet
train_dataSet train_hwLabels = readDataSet(‘trainingDigits‘)
knn = neighbors.KNeighborsClassifier(algorithm=‘kd_tree‘ n_neighbors=3)
knn.fit(train_dataSet train_hwLabels)
 
#read  testing dataSet
dataSethwLabels = readDataSet(‘testDigits‘)
 
res = knn.predict(dataSet)  #对测试集进行预测
error_num = np.sum(res != hwLabels) #统计分类错误的数目
num = len(dataSet)          #测试集的数目
print(“Total num:“num“ Wrong num:“ \
      error_num“  WrongRate:“error_num / float(num))

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1700  2018-07-12 10:00  KNN实现“手写识别”\test.py

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_0.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_1.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_10.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_11.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_12.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_13.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_14.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_15.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_16.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_17.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_18.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_19.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_2.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_20.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_21.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_22.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_23.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_24.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_25.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_26.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_27.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_28.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_29.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_3.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_30.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_31.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_32.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_33.txt

     文件       1088  2010-10-07 21:35  KNN实现“手写识别”\testDigits\0_34.txt

............此处省略2858个文件信息

评论

共有 条评论