【机器学习】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()
复制代码

 

posted @   海底淤泥  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示