zoukankan      html  css  js  c++  java
  • 【机器学习】k-近邻算法应用之手写数字识别

    上篇文章简要介绍了k-近邻算法的算法原理以及一个简单的例子,今天再向大家介绍一个简单的应用,因为使用的原理大体差不多,就没有没有过多的解释。

    为了具有说明性,把手写数字的图像转换为txt文件,如下图所示(三个图分别为5、6、8):

    要使用k-近邻算法,需要有足够的样本数据和测试数据,我放到了两个文件夹里(trainingDigits和testDigits),可以在这里(http://pan.baidu.com/s/1i3osO7N)下载使用

    这里,每个数字有32X32个0或1,可以认为是一个维度为1024的点,也就是对这种点运用kNN算法,这里只附上手写数字的测试函数代码,代码和总需要的其他函数都在上一篇文章中,另外,需要注意的是因为要获取文件类列表,需要在文件中的头部再加上from os import listdir

     1 def handwritingClassTest():
     2     hwLabels = []
     3     trainingFileList = listdir('trainingDigits')
     4     m = len(trainingFileList)
     5     trainingMat = zeros((m, 1024))
     6     for i in range(m):
     7         fileNameStr = trainingFileList[i]
     8         fileStr = fileNameStr.split('.')[0]
     9         classNumStr = int(fileStr.split('_')[0])
    10         hwLabels.append(classNumStr)
    11         trainingMat[i, :] = img2vector('trainingDigits/%s' % fileNameStr )
    12     testFileList = listdir('testDigits')
    13     errorCount = 0.0
    14     mTest = len(testFileList)
    15     for i in range(mTest):
    16         fileNameStr = testFileList[i]
    17         fileStr = fileNameStr.split('.')[0]
    18         classNumStr = int(fileStr.split('_')[0])
    19         vectorUnderTest = img2vector('testDigits/%s' % fileNameStr)
    20         classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
    21         print "the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr)
    22         if(classifierResult != classNumStr): errorCount += 1.0
    23     print "
    the total number of errors is: %d" % errorCount
    24     print "
    the total error rate is: %f" % (errorCount / float(mTest))

    测试结果如下图:

  • 相关阅读:
    linux下使用hash_map及STL总结
    编写Linux系统下Daemon程序的方法步骤
    c语言版网络爬虫spiderq
    利用unordered_map代替hash_map My Study
    Mike Wallace of '60 Minutes' to retire
    让Redis使用TCMalloc,实现高性能NOSql服务器
    守护进程的单实例实现_非宁静无以致远_百度空间
    sscanf,sscanf_s及其相关用法 小 楼 一 夜 听 春 雨 博客园
    实现个hash_map容器类玩玩 苍梧 博客园
    [Linux初级]Linux下动态库的生成及链接方法
  • 原文地址:https://www.cnblogs.com/jtianwen2014/p/4262113.html
Copyright © 2011-2022 走看看