iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python手写拼音识别
  • 417
分享到

基于Python手写拼音识别

2024-04-02 19:04:59 417人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、算法构造1.简单介绍一下knn算法2.python实现KNN二、准备数据1、将图片转换成数组矩阵三、处理数据:训练集与测试集1、区分训练集和测试集2、加载数据3、建立训练数据

一、算法构造

1.简单介绍一下knn算法

KNN算法,也叫K最近邻算法。功能是分类。算法逻辑非常简单,说直白点就是:先找到跟你最近的k个邻居(假设k=5),再看你的邻居给哪个类别投票(即邻居的标签),少数服从多数,得票最多的结果就是你的类别。

在这个算法中最关键的三点:

k值 :选择距离最近的k个邻居。
距离计算:计算距离的方法有欧式距离和曼哈顿距离,本文采用欧式距离,即先求差值的平方和,再开根号。
分类标签:本文的分类标签即a,b,c,d等字母

2.Python实现KNN

'''
k:k值
testdata:测试数据集
traindata:训练数据集
labels:分类标签
'''

def knn(k, testdata, traindata, labels):
    '''定义算法'''
    traindatasize = traindata.shape[0] #计算训练集的长度
    dif = tile(testdata,(traindatasize,1)) - traindata #将测试集扩展至训练集的长度,再求差值
    sqrdif = dif**2 #求差值的平方
    sumsqrdif = sqrdif.sum(axis=1) #求平方和
    distance = sumsqrdif**0.5 #再开根号,即所有的距离
    sorted_distance = distance.argsort() #对距离进行排序,返回排序后的索引
    count = {} #准备一个空字典,存放投票结果
    for i in range(0,k):  
        vote = labels[sorted_distance[i]] #提取索引多对应的标签值作为字典的key
        count[vote] = count.get(vote,0)+1  #票数作为字典的value
    sorted_count = sorted(count.items(),key=lambda x:x[1],reverse=True) #对最后的投票结果进行排序
    return sorted_count[0][0] #返回得票最多的标签

二、准备数据

用最笨的方法,手写了一批png格式的数字图片:

图片的尺寸都是统一的:32*32像素
图片的命名也是统一的:数字标签+"_"+第n张图+“.png"

1、将图片转换成数组矩阵

训练数据集与测试数据集都是标准化后的数组矩阵,而我们的试验对象是手写体数字图片,首先需要将图片进行一下数据化处理。

def img2Model(originDataPath, modelpath):
    list = os.listdir(originDataPath)
    for child in list:
        s_list = os.listdir(originDataPath + child)
        for i in s_list:

            filepath=originDataPath + child + '/' + i
            # print(filepath)
            img = cv2.imdecode(np.fromfile(filepath, dtype=np.uint8),0)
            img = cv2.resize(img, (32, 32))
            img = np.asarray(img)
            img[img > 127] = 255
            img[img <= 127] = 1
            img[img == 255] = 0
            dstFileName = modelPath + i.split('.')[0] + '.txt'
            np.savetxt(dstFileName, img, fmt='%d', delimiter=' ')

三、处理数据:训练集与测试集

1、区分训练集和测试集

# 随机分拣出测试集,其他文件为训练集
def shutildata(modelpath, trainpath, testpath):
    txtlist = os.listdir(modelpath)
    index = [random.randint(0, len(txtlist)) for i in range(10)]
    # print(index)
    arr = [txtlist[i].split('.')[0].split("_")[1] for i in index]
    for i in txtlist:
        try:
            if i.split(".")[0].split("_")[1] in arr:
                shutil.copy(modelpath + "/" + i, testpath)
            else:
                shutil.copy(modelpath + "/" + i, trainpath)
        except:
            pass

2、加载数据

# 加载数据

def load_data(dataFilePath):
    arr = np.loadtxt(dataFilePath, dtype=np.int)
    arr = arr.flatten()
    return arr

3、建立训练数据

# 建立训练数据集
def makeTrainData(trainpath):
    labels = []
    trainfile = os.listdir(trainpath)

    trainarr = np.zeros((len(trainfile), 1024))
    for i in range(0, len(trainfile)):
        # print(trainfile[i])
        thislabel = trainfile[i].split(".")[0].split("_")[0]

        if len(thislabel) != 0:
            labels.append(int(thislabel))
        trainarr[i, :] = load_data(trainpath + trainfile[i])
    return trainarr, labels

四、测试数据

# 验证
def validate(testpath, trainpath, k):
    trainarr, labels = makeTrainData(trainpath)
    testfiles = os.listdir(testpath)
    count = 0

    # 读取字典表
    with open('num_char.JSON', 'r') as f:
        dict = json.loads(f.read())
        # print(dict)

    for i in range(0, len(testfiles)):
        testpicname = testfiles[i].split("_")[0]
        testarr = load_data(testpath + testfiles[i])
        result = knn(k, testarr, trainarr, labels)

        testpicname = dict[str(testpicname)]
        result = dict[str(result)]

        print("真正字母:"+testfiles[i] +"  " + testpicname + "  " + "测试结果为:{}".fORMat(result))
        if str(testpicname) == str(result):
            count += 1
    print("-----------------------------")
    print("测试集为:{}个,其中正确了{}个".format(len(testfiles),count))
    print("正确率为{}".format(count / len(testfiles)))
    print()

到此这篇关于基于Python手写拼音识别的文章就介绍到这了,更多相关Python手写拼音识别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于Python手写拼音识别

本文链接: https://www.lsjlt.com/news/162934.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Python手写拼音识别
    目录一、算法构造1.简单介绍一下knn算法2.Python实现KNN二、准备数据1、将图片转换成数组矩阵三、处理数据:训练集与测试集1、区分训练集和测试集2、加载数据3、建立训练数据...
    99+
    2022-11-13
  • 基于TensorFlow的手写中文识别(
    具体效果实现: 第一次由于设备问题所以只训练了是一些个简单的字; 第二选了23个字训练了3000在字迹清晰下能够识别: 类似于默,鼠,鼓,这类文字也能识别,由于训练数据的问题,在测试的时候应尽量写在正中间   中文手写数据集下载: ...
    99+
    2023-01-30
    中文 TensorFlow
  • 基于tensorflow实现Android手写数字识别
    前段时间训练了mnist手写数字识别的模型,学习后将其移植到Android端 我是参考的大佬https://puke3615.github.io...
    99+
    2022-06-06
    tensorflow Android
  • 基于Python实现语音识别和语音转文字
    目录前言直接使用获取权限1.环境准备2.获取权限代码实现1.获取access_token2.获取转换后音频3.配置接口参数4.完整demo5.执行前言 嗨嗨,大家好呀 ~ 今天给你们...
    99+
    2022-11-11
  • Python神经网络TensorFlow基于CNN卷积识别手写数字
    目录基础理论一、训练CNN卷积神经网络1、载入数据2、改变数据维度3、归一化4、独热编码5、搭建CNN卷积神经网络5-1、第一层:第一个卷积层5-2、第二层:第二个卷积层5-3、扁平...
    99+
    2022-11-12
  • 基于Python创建语音识别控制系统
    下面附上参考文章,这篇文章是通过识别出来的文字来打开浏览器中的默认网站。python通过调用百度api实现语音识别 题目很简单,利用语音识别识别说出来的文字,根据文字的内容来控制图形...
    99+
    2022-11-12
  • 基于Python编写一个图片识别系统
    目录项目介绍环境准备程序原理实现脚本测试效果总结项目介绍 本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域 介绍一下...
    99+
    2022-11-11
  • Android基于讯飞语音SDK实现语音识别
    一、准备工作 1、你需要android手机应用开发基础 2、科大讯飞语音识别SDK android版 3、科大讯飞语音识别开发API文档 4、android手机 关于科大讯飞S...
    99+
    2022-06-06
    讯飞 sdk 语音识别 Android
  • 手把手教你写--FTP(基于python)
    ftp需求分析1. 多用户同时登陆(客户端合法性验证)2. 用户登陆,加密认证--(hamc or md5)3. 注册功能4. 上传/下载文件,保证文件一致性5. 不同用户家目录不同,且只能访问自己的家目录6. 对用户进行磁盘配额、不同用户...
    99+
    2023-01-30
    手把手教你 FTP python
  • 基于C#实现语音识别功能详解
    在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。 以上,当我说"name",显示"Darren",我说&...
    99+
    2022-11-13
  • 基于C#怎么实现语音识别功能
    今天小编给大家分享一下基于C#怎么实现语音识别功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在.NET4.0中,我可以借...
    99+
    2023-06-30
  • 单层的基础神经网络基于TensorFlow如何实现手写字识别
    本篇文章为大家展示了单层的基础神经网络基于TensorFlow如何实现手写字识别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先上代码import tensorflow &nbs...
    99+
    2023-06-17
  • C++基于OpenCV实现手势识别的源码
    先给大家上效果图: 源码在下面 使用 RGB 值分割手部区域,即手部的 GB 值将与背景不同 或者使用边缘检测 或者 背景减法。  我这里使用了背景减法模型。OpenC...
    99+
    2022-11-12
  • 基于Python实现简单的汉字拼音转换工具
    目录1.准备2.基本使用3.高级使用将汉字转为拼音,可以用于批量汉字注音、文字排序、拼音检索文字等常见场景。 现在互联网上有许多拼音转换工具,基于Python的开源模块也不少,今天给...
    99+
    2022-11-11
  • 基于CNN的MINIST手写数字识别项目代码以及原理详解
    文章目录 项目简介项目下载地址项目开发软件环境项目开发硬件环境前言一、数据加载的作用二、Pytorch进行数据加载所需工具2.1 Dataset2.2 Dataloader2.3 Torchv...
    99+
    2023-08-31
    cnn python 深度学习 手写数字识别 MINIST
  • 用PyTorch构建基于卷积神经网络的手写数字识别模型
    本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、MINST数据集介绍与分析 二、卷积神经网络 三、基于卷积神经网络的手写数字识别 一、MINST数据集...
    99+
    2023-09-06
    python 机器学习 人工智能 深度学习
  • 基于Python的车牌识别系统实现
    本文将以基于Python的车牌识别系统实现为方向,介绍车牌识别技术的基本原理、常用算法和方法,并详细讲解如何利用Python语言实现一个完整的车牌识别系统。 目录 引言车牌识别技...
    99+
    2023-10-18
    python 车牌识别 计算机视觉 机器学习 原力计划
  • Python基于Opencv识别两张相似图片
    目录相关背景 直方图计算法 图像指纹与汉明距离 平均哈希法(aHash) 感知哈希算法(pHash) dHash算法 在网上看到python做图像识别的相关文章后,真心感觉pytho...
    99+
    2022-11-12
  • Python基于ImageAI实现图像识别详解
    目录背景简介图像预测算法引入目标检测图像目标检测视频目标检测背景简介 ImageAI是一个面向计算机视觉编程的Python库,支持最先进的机器学习算法。主要图像预测,物体检测,视频对...
    99+
    2023-02-01
    Python ImageAI图像识别 Python 图像识别 Python ImageAI
  • 基于Python编写一个语音合成系统
    目录背景语音合成系统准备工作步骤代码实现背景 一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等。 语音合成系统 其实就是一个基于...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作