概述
文本为测试集和训练集两个文件夹,里面文件命名为0_0.txt(为数字0的第0个实例)。里面为32*32的数字
1.将文本转为向量
def img2vector(filename):
returnvect = zeros((1,1024))
with open(filename,"r") as f:
lines = f.readlines()
for i in range(32):
for j in range(32):
returnvect[0,32*i+j] = int(lines[i][j])
return returnvect
2.识别
def handwritingclassTest():
lables = []
trainfileList = os.listdir('trainingDigits')
trainSize = len(trainfileList)
trainMat = zeros((trainSize, 1024))
for i in range(trainSize):
lable = trainfileList[i].split('_')[0]
lables.append(lable)
trainMat[i,:] = img2vector("trainingDigits/"+trainfileList[i])
testfileList = os.listdir('testDigits')
errorCount = 0.0
testSize = len(testfileList)
for i in range(testSize):
testMat =img2vector("testDigits/"+testfileList[i])
Result = classify0(testMat,trainMat, lables, 2)
testlable = testfileList[i].split('_')[0]
print("predict:"+Result+",real:"+testlable)
if Result!=testlable:
errorCount += 1
rate = errorCount/testSize
print("errorrate:"+str(rate))
问题:运行时一直显示读文件时an integer is required (got type str),最后找到原因是在引用os模块时,引用方式为from os import *,改为import os就好了。
缺点:耗时,无法给出任何数据的基础结构信息。
最后
以上就是爱听歌钢笔为你收集整理的机器学习笔记1---knn实践篇 数字识别的全部内容,希望文章能够帮你解决机器学习笔记1---knn实践篇 数字识别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复