【机器学习】k-近邻算法应用之手写数字识别
2015-01-30 13:15
821 查看
上篇文章简要介绍了k-近邻算法的算法原理以及一个简单的例子,今天再向大家介绍一个简单的应用,因为使用的原理大体差不多,就没有没有过多的解释。
为了具有说明性,把手写数字的图像转换为txt文件,如下图所示(三个图分别为5、6、8):
要使用k-近邻算法,需要有足够的样本数据和测试数据,我放到了两个文件夹里(trainingDigits和testDigits),可以在这里(http://pan.baidu.com/s/1i3osO7N)下载使用
这里,每个数字有32X32个0或1,可以认为是一个维度为1024的点,也就是对这种点运用kNN算法,这里只附上手写数字的测试函数代码,代码和总需要的其他函数都在上一篇文章中,另外,需要注意的是因为要获取文件类列表,需要在文件中的头部再加上from os import listdir
测试结果如下图:
为了具有说明性,把手写数字的图像转换为txt文件,如下图所示(三个图分别为5、6、8):
要使用k-近邻算法,需要有足够的样本数据和测试数据,我放到了两个文件夹里(trainingDigits和testDigits),可以在这里(http://pan.baidu.com/s/1i3osO7N)下载使用
这里,每个数字有32X32个0或1,可以认为是一个维度为1024的点,也就是对这种点运用kNN算法,这里只附上手写数字的测试函数代码,代码和总需要的其他函数都在上一篇文章中,另外,需要注意的是因为要获取文件类列表,需要在文件中的头部再加上from os import listdir
def handwritingClassTest(): hwLabels = [] trainingFileList = listdir('trainingDigits') m = len(trainingFileList) trainingMat = zeros((m, 1024)) for i in range(m): fileNameStr = trainingFileList[i] fileStr = fileNameStr.split('.')[0] 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] 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))
测试结果如下图:
相关文章推荐
- 【机器学习】k-近邻算法应用之手写数字识别
- 机器学习实战之k-近邻算法(6)---手写数字识别系统(0-9识别)
- 机器学习-KNN算法应用-手写数字识别( hand-written digits)
- 机器学习(10.3)--手写数字识别的不同算法比较(3)--支持向量机(SVM)算法
- 机器学习——k-近邻算法(手写字识别)
- 基于K-近邻算法的手写数字识别研究
- 机器学习(三):逻辑回归应用_手写数字识别_OneVsAll_Python
- 机器学习深度学习基础笔记(2)——梯度下降之手写数字识别算法实现
- 机器学习(10.4)--手写数字识别的不同算法比较(4)--神经网络
- k-近邻算法实现手写数字识别系统
- 机器学习整理笔记——使用k-近邻算法对手写识别系统的测试
- 机器学习实战——使用K-近邻算法识别手写数字
- 使用k-近邻算法识别手写数字。
- k-近邻算法实现手写数字识别系统
- 机器学习(10.2)--手写数字识别的不同算法比较(2)--KNN算法
- CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu
- 《机器学习实战》第二章:k-近邻算法(3)手写数字识别
- 『机器学习实战』使用 k-近邻算法识别手写数字
- 机器学习(4)——KNN算法及手写数字的识别(二)
- KNN近邻算法(python3)识别手写数字