• 【机器学*】k*邻算法-03


    心得体会:

      需要思考如何将现实对象转化为特征向量,设置特征向量时记住鸭子定律1

      鸭子定律1 如果走路像鸭子、说话像鸭子、长得像鸭子、啄食也像鸭子,那它肯定就是一只鸭子

      事物的外在特征就是事物本质的表现

    # 2-3手写识别系统
    
    #32*32转1*1024数组
    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
    
    # testVector=img2vector("E:/Python/《机器学*实战》代码/Ch02/trainingDigits/0_0.txt")
    # print(testVector[0,0:31])
    
    #从os模块读取测试代码
    import os
    def handwritingClassTest():
        hwLabels=[]#数据结果
        trainingFileList=os.listdir("E:/Python/《机器学*实战》代码/Ch02/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("E:/Python/《机器学*实战》代码/Ch02/trainingDigits/%s"%fileNameStr)
        errorCount=0.0
        testFileList=os.listdir("E:/Python/《机器学*实战》代码/Ch02/testDigits")
        mTest=len(testFileList)
        for i in range(mTest):
            fileNameStr = testFileList[i]
            fileStr = fileNameStr.split('.')[0]
            classNumStr = int(fileStr.split('_')[0])
            vectorUnderTest = img2vector("E:/Python/《机器学*实战》代码/Ch02/testDigits/%s" % fileNameStr)
            classifierResult=classify0(vectorUnderTest,trainingMat,hwLabels,3)
            if(classifierResult!=classNumStr):
                errorCount+=1
        print("error rate:%s"%(errorCount/float(mTest)))
    
    handwritingClassTest()
  • 相关阅读:
    对double数据类型的数据保留两位小数,并且进行四舍五入
    div位置设置
    每天一算法 -- (排序算法总结)
    SQL行转列
    设计模式的六大原则
    每天一算法 -- (插入排序)
    每天一算法 -- (选择排序)
    通用扩展函数--类型转换
    wcf和webservice
    Cookie的介绍及使用
  • 原文地址:https://www.cnblogs.com/LPworld/p/13268249.html
Copyright © 2020-2023  润新知