資源簡介
KNN手寫識別代碼及樣本集,樣本集來自

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
‘‘‘
Created?on?Sep?16?2010
kNN:?k?Nearest?Neighbors
Input:??????inX:?vector?to?compare?to?existing?dataset?(1xN)
????????????dataSet:?size?m?data?set?of?known?vectors?(NxM)
????????????labels:?data?set?labels?(1xM?vector)
????????????k:?number?of?neighbors?to?use?for?comparison?(should?be?an?odd?number)
Output:?????the?most?popular?class?label
@author:?pbharrin
‘‘‘
from?numpy?import?*
import?operator
from?os?import?listdir
def?classify0(inX?dataSet?labels?k):
????#采用KNN判斷類別
????dataSetSize?=?dataSet.shape[0]#計算訓練樣本樣本數
????diffMat?=?tile(inX?(dataSetSize1))?-?dataSet
????sqDiffMat?=?diffMat**2
????sqDistances?=?sqDiffMat.sum(axis=1)
????distances?=?sqDistances**0.5#以上4行計算距離
????sortedDistIndicies?=?distances.argsort()#對距離計算結果進行排序,默認為升序
????classCount={}
????for?i?in?range(k):#計算最近K個距離所屬類別
????????voteIlabel?=?labels[sortedDistIndicies[i]]
????????classCount[voteIlabel]?=?classCount.get(voteIlabel0)?+?1
????sortedClassCount?=?sorted(classCount.iteritems()?key=operator.itemgetter(1)?reverse=True)#得到最后的類別
????return?sortedClassCount[0][0]
????
def?img2vector(filename):
????#從text文本中讀取數據
????returnVect?=?zeros((11024))
????fr?=?open(filename)
????for?i?in?range(32):
????????lineStr?=?fr.readline()
????????for?j?in?range(32):
????????????returnVect[032*i+j]?=?int(lineStr[j])
????return?returnVect
????
def?handwritingClassTest():
????hwLabels?=?[]
????trainingFileList?=?listdir(‘trainingDigits‘)???????????#加載訓練集
????m?=?len(trainingFileList)
????trainingMat?=?zeros((m1024))
????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?“the?classifier?came?back?with:?%d?the?real?answer?is:?%d“?%?(classifierResult?classNumStr)
????????if?(classifierResult?!=?classNumStr):?errorCount?+=?1.0#計算樣本錯誤個數
????print?“\nthe?total?number?of?errors?is:?%d“?%?errorCount
????print?“\nthe?total?error?rate?is:?%f“?%?(errorCount/float(mTest))#計算錯誤率
handwritingClassTest()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-10-26?21:50??第一章_KNN\
?????文件????????2834??2016-10-26?20:24??第一章_KNN\kNN.py
?????文件????????3840??2016-10-26?21:48??第一章_KNN\KNN_digits.m
?????目錄???????????0??2016-10-26?21:39??第一章_KNN\testDigits\
?????文件????????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
............此處省略2854個文件信息
- 上一篇:十天學會單片機100
- 下一篇:基于Qt的實時曲線繪制
評論
共有 條評論