資源簡介
基于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個文件信息
評論
共有 條評論