zoukankan      html  css  js  c++  java
  • 机器学习-KNN识别手写数字

    逻辑:

    代码

    import os
    from com.test.my_test03 import *
    
    # 将每一个文件的内容拼接成一行
    def img2vector(fileName):
        returnVect = np.zeros((1, 1024))
        file = open(fileName)
        for i in range(32):
            line = file.readline()
            if(line != "
    "):
                for j in range(32):
                    returnVect[0, 32*i +j] = int(line[j])
        return returnVect
    
    class IdentifImgClassTest(object):
        # 每个文件的代表数字
        hwLabels = []
        # 获取TrainData目录下所有的文件
        trainingFileList = os.listdir('D:/code/python/test2/data/TrainData')
        # 训练集的数据量,空间中分布的数据量  m=1934
        m = len(trainingFileList)
        # 1934*1024的零矩阵
        trainingMat = np.zeros((m, 1024))
        # 构造训练集
        for i in range(m):
            fileName = trainingFileList[i]
            fileNameSplit = fileName.split('.')[0]
            num = int(fileNameSplit.split('_')[0])
            hwLabels.append(num)
            trainingMat[i, :] = img2vector('D:/code/python/test2/data/TrainData/%s' % fileName)
    
        #构造测试集
        testFileList = os.listdir('D:\code\python\test2\data\TestData')
        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('D:/code/python/test2/data/TestData/%s' % fileNameStr)
            # 将训练集数据和第一条测试数据 以及K值传递给classify这个方法
            classifierResult = classify(vectorUnderTest, trainingMat, hwLabels, 3)
            print("识别出的数字是: %d, 真实数字是: %d" % (classifierResult, classNumStr))
            if (classifierResult != classNumStr): errorCount += 1.0
        print("
    识别错误次数 %d" % errorCount)
        errorRate = errorCount / float(mTest)
        print("
    正确率: %f" % (1 - errorRate))
    
    if __name__ == '__main__':
        IdentifImgClassTest()

    结果:

  • 相关阅读:
    UICollectionView下拉使header放大模糊
    odoo13下searchpanel进行扩展.
    (原创)odoo关系字段在视图中的行为控制 总结
    (原创)odoo解决方案---接收以及回复外部邮件
    (原创)odoo11配置邮件功能的那些事儿
    入坑winpdb-1.4.8
    Python的hasattr() getattr() setattr() 函数使用方法详解
    jQuery webcam plugin
    (原创)odoo在docker环境下无法备份
    (转)PostgreSQL pg_dump&psql 数据的备份与恢复
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14617509.html
Copyright © 2011-2022 走看看