python做数字识别_用python实现手写数字识别

本文介绍了使用Python通过多元逻辑回归和神经网络方法实现手写数字识别的过程。首先,展示了如何使用逻辑回归进行训练,包括数据可视化、算法实现和参数训练。接着,详细解释了神经网络的实现,包括权重初始化、神经网络结构和精确度计算。最后,给出了两种方法的识别精度结果。
摘要由CSDN通过智能技术生成

前言

在之前的学习中,已经对神经网络的算法具体进行了学习和了解。现在,我们可以用python通过两种方法来实现手写数字的识别。这两种方法分别是多元逻辑回归和神经网络方法。

用多元逻辑回归手写数字识别

训练样本简介

首先,可以用逻辑回归实现手写数字识别的多元分类,在ex3data.mat文件中保存着一个包含5000个培训考试训练数据集的手写数字,.mat格式表示这些训练数据集以矩阵格式保存,而不是文本格式。训练集中有5000个训练样本,每个训练样本是一个20X20像素的灰度图像,每一个像素用一个float型数据表示当前位置的灰度强度。20X20像素形成一个400维向量,每一个训练样本形成一个单行矩阵

,5000个训练样本构成一个5000X400的矩阵,每一个行向量代表手写数字图像的训练样本。矩阵

可以如下表示:

数据集第二部分包含一个5000维的矩阵

, 代表输出值的标签,即0,1,2,3,4,5,6,7,8,9.

如下代码所示,首先导入算法实现所需要的python库

import matplotlib.pyplot as plt

import numpy as np

import scipy.io as scio

初始化一些参数

input_layer_size = 400 # 20x20 像素矩阵

num_labels = 10 # 手写数字 0,1,2,3,4,5,6,7,8,9

数据可视化

随机选取

矩阵中的100行向量,并将这些函数传递到displayData函数中,通过调用此函数,我们可以显示出这些向量的灰度图像,具体实现如下所示:

载入数据

data = scio.loadmat('ex3data1.mat')

X = data['X']

y = data['y'].flatten()

m = y.size

绘图函数实现

绘图函数的实现如下所示,具体实现思路就是确定显示图像的像素大小,然后读取训练集数据,依次将其填充到设定好大小的像素矩阵中,具体可参考代码注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值