資源簡介
基于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個文件信息
- 上一篇:2018最新BAT-python面試題內附答案
- 下一篇:基于KNN實現“手寫識別”
評論
共有 條評論