#(1)收集数据:提供文本文件 #(2)准备数据:编写函数img2vector(),将图片格式转换为分类器使用的向量格式 import numpy as np def img2vector(filename): returnVect = np.zeros((1,1024)) fr = open(filename) for i in range(32): #32行 lineStr = fr.readline() for j in range(32): #32列 returnVect[0,32*i+j] = int(lineStr[j]) return returnVect print(img2vector("E:/代码/机器学习实战/第二章:K-近邻算法/手写识别系统/digits/trainingDigits/0_0.txt")) #(3)分析数据:在python命令提示符中检查数据,确保它符合要求 #(4)训练数据:此步骤不适用于K-近邻算法 #(5)测试算法:编写函数使用提供的部分算法数据集作为测试样本,测试样本与非测试样本的区别在于 # 测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。 from os import listdir #从os模块中导入函数listdir(),它可以列出给定目录的文件名 import KNN def handwritingClassTest(): hwLabels = [] trainingFileList = listdir('E:/代码/机器学习实战/第二章:K-近邻算法/手写识别系统/digits/trainingDigits') m = len(trainingFileList) trainingMat = np.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:/代码/机器学习实战/第二章:K-近邻算法/手写识别系统/digits/trainingDigits/%s'% fileNameStr) testFileList = listdir("E:/代码/机器学习实战/第二章:K-近邻算法/手写识别系统/digits/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('E:/代码/机器学习实战/第二章:K-近邻算法/手写识别系统/digits/testDigits/%s'% fileNameStr) classiferResult = KNN.classify0(vectorUnderTest,trainingMat,hwLabels,3) print("the classifier came back with: %d,the real answer is: %d" %(classiferResult,classNumStr)) if classiferResult != classNumStr: errorCount += 1.0 print("\nthe total number od errors is: %d" %errorCount) print("\nthe total error rate is: %f"%(errorCount/float(mTest))) handwritingClassTest() # print(handwritingClassTest()) #(6)使用算法
《机器学习实战》手写识别系统
猜你喜欢
转载自blog.csdn.net/niuxiaolei/article/details/80487946
今日推荐
周排行