资源简介

基于Python3.7实现的手写识别功能,调用sklearn模块中的神经网络算法。包括源程序、训练数据、测试数据和测试结果。

资源截图

代码片段和文件信息

# coding=gbk
import numpy as np     
from os import listdir 
from sklearn.neural_network import MLPClassifier 

#将加载的32*32图片矩阵展开成一列向量
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([numFiles10])      #用于存放对应的one-hot标签
    for i in range(numFiles):   
        filePath = fileList[i]  #获取文件名称/路径      
        digit = int(filePath.split(‘_‘)[0])  #通过文件名获取标签      
        hwLabels[i][digit] = 1.0        #将对应的one-hot标签置1
        dataSet[i] = img2vector(path +‘/‘+filePath)   
    return dataSethwLabels
 
#加载训练集
train_dataSet train_hwLabels = readDataSet(‘trainingDigits‘)

#构建神经网络
clf = MLPClassifier(hidden_layer_sizes=(100)
                    activation=‘logistic‘ solver=‘adam‘
                    learning_rate_init = 0.0001 max_iter=1500)
print(clf)

#训练神经网络
clf.fit(train_dataSettrain_hwLabels)
 
#加载测试集
dataSethwLabels = readDataSet(‘testDigits‘)

res = clf.predict(dataSet)   #使用训练好的MLP对测试集进行预测
error_num = 0                #统计预测错误的数目
num = len(dataSet)           #测试集的数目
for i in range(num):         #遍历预测结果
    #比较长度为10的数组,返回包含01的数组,0为不同,1为相同
    #若预测结果与真实结果相同,则10个数字全为1,否则不全为1
    if np.sum(res[i] == hwLabels[i]) < 10: 
        error_num += 1                     
print(“Total num:“num“ Wrong num:“ \
error_num“  WrongRate:“error_num / float(num))

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

     文件      28979  2018-07-12 01:29  神经网络实现“手写识别”\100_1000.PNG

     文件      24124  2018-07-12 01:34  神经网络实现“手写识别”\100_1500.PNG

     文件      24430  2018-07-12 00:00  神经网络实现“手写识别”\100_2000.PNG

     文件      28919  2018-07-12 01:15  神经网络实现“手写识别”\100_500.PNG

     文件      24388  2018-07-12 00:11  神经网络实现“手写识别”\200_2000.PNG

     文件      24548  2018-07-12 00:02  神经网络实现“手写识别”\50_2000.PNG

     文件       1993  2018-07-12 01:29  神经网络实现“手写识别”\demo.py

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

评论

共有 条评论