生活随笔
收集整理的這篇文章主要介紹了
KNN算法--手写输入判断(Python3)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
可能對于有些人在以前看過這個(gè)例子,但是很不巧的是Python3和Python2的之間的一些差異,導(dǎo)致了照搬原來的那份是不能用了。
這里,我根據(jù)自己的情況和進(jìn)行了改寫
要數(shù)據(jù)集的話,可以給我私信,或者是在評論去留言。我看到就會回復(fù)
記得用的時(shí)候,改寫下那個(gè)文件名,看你自己是把數(shù)據(jù)放到哪了,就寫哪。
from numpy
import *
import os
import operator
def classify0(inX, dataSet, labels, k):dataSetSize = dataSet.shape[
0]DiffMat = tile(inX, (dataSetSize,
1)) - dataSetsqDiffMat = DiffMat**
2sqDistances = sqDiffMat.sum(axis=
1)distances = sqDistances**
0.5 sortedDistances = distances.argsort()classCount = {}
for i
in range(k):voteIlabel = labels[sortedDistances[i]]classCount[voteIlabel] = classCount.get(voteIlabel,
0) +
1sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(
1), reverse=
True)
return sortedClassCount[
0][
0]
def img2vector(filename):returnVect = zeros((
1,
1024)) fr = open(filename)
for i
in range(
32):lineStr = fr.readline()
for j
in range(
32):returnVect[
0,
32 * i + j] = int(lineStr[j])
return returnVect
def handwritingClassTest():hwLabels = []trainingFileList = os.listdir(
'E:/Code/Python/test/KNN算法/digits/trainingDigits') m = len(trainingFileList) traingMat = zeros((m,
1024))
for i
in range(m):fileNameStr = trainingFileList[i]fileStr = fileNameStr.split(
'.')[
0] classNumStr = int(fileStr.split(
'_')[
0]) hwLabels.append(classNumStr)traingMat[i, :] = img2vector(
'E:/Code/Python/test/KNN算法/digits/trainingDigits/%s' % fileNameStr)testFileList = os.listdir(
'E:/Code/Python/test/KNN算法/digits/testDigits')errorCount =
0.0 mTest = len(testFileList)
for i
in range(mTest):fileNameStr = testFileList[i]fileStr = fileNameStr.split(
'.')[
0]classNumStr = int(fileStr.split(
'_')[
0])vectorUnderTest = img2vector(
'E:/Code/Python/test/KNN算法/digits/testDigits/%s' % fileNameStr)classifyResult = classify0(vectorUnderTest, traingMat, hwLabels,
3)
if classifyResult != classNumStr:errorCount +=
1.0print(
"The error times is %d" % errorCount)print(
"The error rate is %.3f" % (errorCount / float(mTest)))
if __name__ ==
"__main__":handwritingClassTest()
總結(jié)
以上是生活随笔為你收集整理的KNN算法--手写输入判断(Python3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。