我是靠谱客的博主 爱听歌钢笔,最近开发中收集的这篇文章主要介绍机器学习笔记1---knn实践篇 数字识别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文本为测试集和训练集两个文件夹,里面文件命名为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实践篇 数字识别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部