解密MNIST数据库:手写数字识别神器 (读取mnist数据库)

随着技术的迅速发展,识别手写数字的技术已经逐步趋于成熟。其中,MNIST(Modified National Institute of Standards and Technology) 手写数字数据库是目前更具代表性的案例。该数据库已成为机器学习领域的经典案例,是许多爱好者和研究者入门的必备工具。

MNIST数据库概述

MNIST数据库包含了70,000个28×28像素大小的单通道灰度图片,其中60,000张图片用于训练模型,10,000张用于测试模型的准确性。这些图片都是由真实人类手写的数字组成,标签从0到9。

这个数据集最初是为了帮助开发者设计、测试和比较图像分类算法而创建的。首次发布于1998年,现在已经成为机器学习界的指标基准。使用MNIST,可以进行手写数字识别、字体识别等各种分类任务。

MNIST的重要性

MNIST的重要性体现在以下三个方面:

1. 提升手写数字识别技术

MNIST提供了一个标准的测试平台,可以比较不同的算法的准确度。在过去的20年中,对MNIST数据集的研究已经推动了手写数字识别技术的快速发展。目前,手写数字识别准确率已经达到99%以上,这种技术正在得到越来越广泛的应用,例如:数字签名识别、银行支票自动识别等。

2. 促进机器学习算法的发展

MNIST已经成为机器学习算法评估的标准数据集,许多新算法的表现都以MNIST为基准。通过MNIST的比较,可以分析算法的优缺点,在此基础上进一步推进算法的改进。

3. 测试计算机硬件性能

对于硬件厂商来说,MNIST也是一个重要的测试标准。在产业迅速发展的背景下,从CPU到GPU再到TPU,计算机硬件性能的优化已经成为整个行业的重要任务之一。MNIST数据集可以帮助验证硬件加速器的性能和速度。

常见的MNIST识别算法

MNIST识别算法有很多,以下是几种常见的MNIST识别算法:

1. 线性分类器

线性分类器是最简单的识别算法之一,它使用线性算法将输入图像映射到分类的损失函数上。这种算法的优点是操作简单,训练速度快,但它的精度相对较低。

2. K-NN算法

K-NN算法指的是K值最近邻算法,它的原理是找出距离输入样本最近的K个样本,根据K个样本的标签进行分类。K-NN算法的优点是便于实现,分类准确度较高,但不适用于大规模数据集的情况。

3. 卷积神经网络

卷积神经网络是MNIST更流行的识别算法之一,它由多个卷积层和全连接层组成。卷积神经网络利用卷积核和池化层的组合,可以有效降低特征维度并提高识别精度。但是该算法需要大量的计算功率,训练时间较长。

4. 支持向量机

支持向量机是一种借助于核函数将数据映射到高维空间解决线性不可分问题的算法。支持向量机可用于二分类和多分类问题,它具有很好的鲁棒性、准确性和泛化能力。但是对于大规模数据集,支持向量机需要大量时间和空间复杂度。

结语

MNIST数据库作为机器学习算法评估的标准数据集,对手写数字识别技术的发展做出了巨大的贡献。从线性分类器到卷积神经网络,技术和算法已经取得了巨大的进展。随着硬件和软件技术的不断升级,我们将看到更多的应用被广泛应用于各个领域。

相关问题拓展阅读:

df1.index与df.类别

1、查看数据类型:type(a)

2、查看已安装的包:

在dos命令行界面:如果你使用的是pip来作为你的python包管理器的话,可以在命令行下直接运行$ pip freeze或者$ pip list来查看安装包的信息,当然其它的包管理器也有类似的功能,同时,你也可以在python交互式解释器中导入pip模块来查看包信息。

在python提示符下,用help(‘modules’),可以显示所有包名称,用import sys as s >> s.modules.keys() ,可以显示系统模块;

3、在LINUX环境下安装anaconda:

1)先找需要安装版本的官网地址链接,如

2)在linux控制台输入:wget

3)先赋搜搭权在安装程序:chmod +x Anaconda3-5.3.0-Linux-x86_64.sh

./Anaconda3-5.3.0-Linux-x86_64.sh

4)一直按ENTER,直到出现选择yes or no,输入yes;

5)继续按ENTER,直到出现选择yes,输入yes,添加环境变量;

6)若上面这一步没选择yes,会默认选择no,则需要自己到安装anaconda的路径下,设置环境变量:

export PATH=/home/anaconda3/bin:KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 36: …一句话注释掉: #̲ export PATH=/u…PATH

export PATH=/root/anaconda3/bin:$PATH

8)然后,保存更改:source ~/.bashrc

9)吵漏闹检测是否安装成功:

进入自己的文件夹目录下输入:anaconda -V conda -V

4、在linux环境下下载并安装mysql:

…%2522%257D&request_id=&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogbaidu_landing_v2~default.nonecase&utm_term=linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E5%AE%89%E8%A3%85mysql&spm=1018.2226.3001.4450

1)先找安装包网址链接:从升罩官网或者网盘下载

2)用linux命令将安装包下载到指定文件夹下:wget

3)再安装到指定目录下:

cd 路径

解压:tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

修改文件夹名称:mv mysql-5.7.25-linux-glibc2.12-x86_64 /mysql

2)新建data目录

命令:mkdir /mysql/data

3)新建mysql用户组及mysql用户

命令:groupadd mysql //新建用户组

命令:useradd mysql -g mysql //新建用户

4)将/usr/local/mysql的所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql

5)配置

命令:/usr/local/mysql/bin/mysql_install_db –user=mysql –basedir=/usr/local/mysql/ –datadir=/usr/local/mysql/data

6)配置/etc/my.cnf

vim /etc/my.cnf

7)开启服务

命令:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //将mysql加入服务

命令:chkconfig mysql on //开机自动启动

命令:service mysql start //开启mysql服务

开启mysql服务报错, 在这里插入图片描述

8)设置密码

命令:/usr/local/mysql/bin/mysql -u root -p //在my.cnf中配置了取消密码验证,此处密码任意输入

命令:use mysql; //操作mysql数据库

命令:update user set authentication_string=password(‘你的密码’) where user=‘root’; //修改密码

命令:flush privileges;

命令:exit; //退出

9)将/etc/my.cnf中的skip-grant-tables删除

10)如果是本机安装则到此步骤已经安装配置完成,如果是在虚拟机或者远程服务器上安装,则需要以下步骤

允许远程连接

命令:/usr/local/mysql/bin/mysql -u root -p //登录

命令:use mysql;

命令:update user set host=’%’ where user = ‘root’;

命令:flush privileges;

命令:exit;

Pandas

dataframe:

1、dataframe,如何查看一个DataFrame对象的所有索引,列名,以及DataFrame中具体的值?

有一个dataframe对象df1,查看索引使用使用df1.index,查看列名使用df1.columns,查看所有的值为df1.values。

2、创建dataframe:

df1=pd.DataFrame(np.arange(16).reshape(4,4),

index = pd.date_range(‘’, periods = 4),

columns=list(‘ABCD’))

3、使用df1.index返回的是一个索引,如果获取具体的值的话,需要使用df1.index.values转化为列表。

4、根据列名取dataframe的数据

基本格式:dataframe

1)取多列

列名要用中括号括起来,所以下述命令

dataframe> 没问题,返回pandas.core.frame.DataFrame类型的值

dataframe出错

2)取一列

列名可以不用中括号括起来,

dataframe 没问题,返回pandas.core.series.Series类型的值

列名也可以用中括号括起来,

dataframe> 也能正常运行,但返回pandas.core.frame.DataFrame类型的值

1. 常用基本方法及属性

df.info() 输出总行数、各列的行数、类型、索引、占用内存等信息;

df.index 输出索引,为 pandas.core.indexes.range.RangeIndex 类型;

df.columns 输出列名,为pandas.core.indexes.base.Index 类型,可使用df.columns.str ;

df.dtypes 各列的类型,输出一个series,值是object类型;

df.values 值,输出一个 array ;

df.describe() 输出各数值列的统计值,如非空个数、均值、std、极值、分位数。

2. 索引

df.set_index() 设置索引,括号内可以填入DataFrame中某列的列名,就能使用此列作为索引;

df.loc 以label索引,可实现花哨的混合索引,如:df.loc100, > ;

df.iloc 以绝对位置索引,即数字;

掩码操作,如 df > 100 > 。

3. 计算:

df.cov() 协方差,df.corr() 相关系数,df.mean(axis = 1),df.median(),df.max();

df.value_counts(ascending = True, bins = 5) 非nan计数(升序排列,分箱);

pd.cut()也能实现连续值离散化,pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)。

4. 增删改查、合并、排序

使用df.copy()防止误修改df;

df.rename(index = {‘a’ : ‘A’}, inplace = True) 重命名索引,注意需要inplace为True才能真正修改;

df.append(df2) 增加;

df.drop(, inplace = True) 删除;

data.drop_duplicates()去重,subset参数可以选择具体的列;

df3 = pd.concat(, axis = 0) 实现两个DataFrame的简易合并;

pd.merge(on, left_on, right_on, left_index, right_index, how, suffixes) 数据表连接操作,on可以指定多个列作为键;

多列排序 data.sort_values(by=,ascending = ,inplace=True),即在by、ascending处传入list,会先按’group’列再按’data’列排序。

5. groupby聚合 和数据透视表pivot_table(相当于多维的groupby操作)

df.pivot_table(index = ‘Sex’, columns=‘Pclass’, values=‘Fare’,aggfunc = ‘sum’) ,aggfunc默认是mean;

6. 时间序列

Pandas所有关于日期与时间的处理方法全部是通过Timestamp对象实现的;

pd.to_datetime(‘’) 把str转化为Timestamp对象(pd.Timestamp也可以);

ts + pd.Timedelta(‘5 days’) 用Timedelta加上时间间隔;

pd.read_csv()方法中参数parse_dates = True,可以直接将数据中的时间作为索引;

将时间戳作为索引值取出对应时间段内的数据:data ,

同时也可以使用 data,data 等简便方式;

仅取1月份的数据 data ;

时间重采样,将原始数据转化为均匀间隔的数据,

DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention=‘start’,kind

=None, loffset=None, limit=None, base=0),如df.resample(‘3D’)方法,对3天的数据进行重采样。

7. apply自定义函数 DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), kwds),说明:

允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,

关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

8.缺失值:DataFrame.isnull().any(),.fillna() 等。

9.字符串Series.str.lower(),str是Series的一个属性,s.str.upper(),s.str.len(),index.str.strip(),df.columns.str.replace(’ ‘,’‘),s.str.split(’‘),s.str.contains(‘Ag’),s.str.get_dummies(sep = ‘|’) 。

10、notebook显示设置:

pd.set_option(),pd.get_option()用于使用Notebook做展示;

pd.set_option(‘display.max_columns’,30),pd.set_option(‘display.max_colwidth’,100),

pd.set_option(‘display.max_colwidth’,100)。

11、重复记录处理

1)生成重复记录

#生成重复数据

df=pd.DataFrame(np.ones(),columns=)

df=

df=

df=df.reindex(columns=) #将新增的一列排在之一列

2)判断重复记录

isDplicated=df.duplicated() #判断重复数据记录

3)删除重复值

new_df1=df.drop_duplicates() #删除数据记录中所有列值相同的记录

new_df2=df.drop_duplicates() #删除数据记录中col3列值相同的记录

new_df3=df.drop_duplicates() #删除数据记录中col4列值相同的记录

new_df4=df.drop_duplicates() #删除数据记录中(col3和col4)列值相同的记录

4)python去重drop_duplicates后一定要reset_index()。

pandas.DataFrame.reset_index

函数作用:重置索引或其level。

重置数据帧的索引,并使用默认索引。如果数据帧具有多重索引,则此方法可以删除一个或多个level。

函数主要有以下几个参数:reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=’’)

各个参数介绍:

level:可以是int, str, tuple, or list, default None等类型。作用是只从索引中删除给定级别。默认情况下删除所有级别。

drop:bool, default False。不要尝试在数据帧列中插入索引。这会将索引重置为默认的整数索引。

inplace:bool, default False。修改数据帧(不要创建新对象)。

col_level:int or str, default=0。如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到之一层。

col_fill:object, default。如果列有多个级别,则确定其他级别的命名方式。如果没有,则复制索引名称。

返回:

DataFrame or None。具有新索引的数据帧,如果inplace=True,则无索引。

python使用问题集锦

1、报错:NameError: name ‘scipy’ is not defined

使用!pip install packages scipy,重新安装成功后,还报错;在运行前先from scipy import optimize,再运行也报错;

还有说是注释或者换行等问题导致的,都无法解决,最后一个可能再试试:在安装scipy前要先安装numpy+mkl(非numpy)。

在如下地址下载安装numpy:

Numpy+MKL is linked to the Intel® Math Kernel Library and includes required DLLs in the numpy.DLLs directory.

下载完成后,在cmd命令行中用pip install numpy-1.22.2+mkl-pp38-pypy38_pp73-win_amd64.whl进行安装,报错如下:

ERROR: numpy-1.22.2+mkl-pp38-pypy38_pp73-win_amd64.whl is not a supported wheel on this platform.

错误原因:安装的不是对应python版本的库,下载的库名中cp27代表python2.7,其它同理。我的python是3.8版本,重新下载后,再安装,进入正常流程中。但是又报如下错误: 在这里插入图片描述

文章知识点与官方知识档案匹配

Python入门技能树首页概览

人正在系统学习中

点击阅读全文

打开CSDN APP,看更多技术内容

Pandas的基本功能_笑 瘾的博客_pandas作用

一、Pandas的常用32个方法和功能 DataFrame() 创建一个DataFrame对象 df.values 返回ndarray类型的对象 df.shape 返回行列数 df.index 获取行索引 df.set_index 设置索引 df.reset_index 重制索引 df.columns 获取列索引 df.rename 重…

继续访问

pandas教程:pandas主要功能详解_hello-java-maker的博客_pand…

df =pd.read_csv(“Counts.csv”, header=0) df.head() 1 2 选择/切片 df ,df 选取指定整列数据 df # 选取一列,成一个series df> # 选取一列…

继续访问

numpy‑1.21.4+mkl‑pp38‑pypy38_pp73‑win_amd64.whl

numpy‑1.21.4+mkl‑pp38‑pypy38_pp73‑win_amd64.whl

Python数据分析 | (17) pandas的基本功能

本篇博客中,我将介绍操作Series和DataFrame中的数据的基本手段。后续将更加深入地挖掘pandas在数据分析和处理方面的功能。这不是pandas库 的详尽文档,主要关注的是最重要的功能,那些不大常用的内容(也就是那 些更深奥的内容)就交给你自己去摸索吧。 目录 1. 重新索引 2. 丢弃指定轴上的项 3. 索引、选取和过滤 4. 整数索引 5. 算术运算和数据对齐 6. …

继续访问

最新发布 python安装ERROR: matplotlib-3.6.2-pp38-pypy38_pp73-win_amd64.whl is not a supported wheel on this plat

我把文件名称改为matplotlib-3.6.2-py39-none-any.whl。2、看到支持的文件的名称是py30-none-any。

继续访问

热门推荐 使用python经常出现NameError: name ” is not defined

使用python经常出现NameError: name ‘’ is not defined感觉神之存在的Bug 用注释居然解决了 之前k_means一直是没定义后来加了注释#abc就解决了from sklearn.cluster import k_means# abc如下图所示:解决后感觉太特么奇妙了

继续访问

pandas中index索引功能是什么

pandas的索引对象可以用来保存坐标轴标签和其它元数据,是使用过程中必要的参与对象,那pandas中index索引功能是什么呢?pandas中index索引可以轻松的读取数据,更方便的数据查询,使用index查询的时候可以获得性能提升。 一、index索引特点 更方便的数据查询,使用index查询的时候可以获得性能提升; 自动的数据对齐功能; 更多更强大的数据结构支持。 二、index索引用途 1、使用index读取数据 import pandas as pd df = pd.read_csv(“./.

继续访问

pandas 基础功能(二)

pandas 基础功能(二) 1.新增 2.删除 3.修改数据 1.新增 1)在最后新增一列(列S): df=list ## 增加列的元素个数要跟原数据列的个数一样 2)在指定位置新增一列(列Q): # 语法格式:列表.insert(index, obj) # index —>对象 obj 需要插入的索引位置。 # obj —> 要插入列表中的对象(列名) col_name=df1.columns.tolist() # 将数据框的列…

继续访问

【报错解决】复现Deep Supervised Cross-Modal Retrieval报错module scipy has no attribute spatial的解决

module scipy has no attribute spatial报错的解决。

继续访问

Python函数调用出现NameError: name ‘‘ is not defined的解决办法

原因: 函数里用的是局部变量,从而函数调用结束后会被销毁。如果不声明是全局变量,那么就会报错:(注意灰色字体注释的地方) def load_data(): from keras.datasets import mnist # global train_image, train_lable , test_image, test_lable (train_image, train_lable), (test_image, test_lable) = mnist.load_data.

继续访问

Python使用pip安装报错:is not a supported wheel on this platform的解决方法

我的python是3.8 win64位 安装cryptography报错is not a supported wheel on this platform 首先我是在官网cryptography · PyPI下载的cryptography-37.0.2-pp38-pypy38_pp73-win_amd64.whl 官网如下,安装的时候报错cryptography · PyPI 解决版本:改安装报的名字 步骤一,cmd里面输入pip debug –verbose,会列出支持包的名字,我把包的名字改

继续访问

Python-Pandas{数据结构与基本功能}

PandsSeries手动构建SeriesSeries的索引和切片按照字典的方式进行索引和切片   Pandas通常是用于数据分析过程中, 数据的清洗, 数据预处理, 数据的描述性分析等过程中。在整个Python数据分析的生态环境中, Pandas的地位非常重要, 利用Pandas可以快速便捷的对数据进行各种各样的处理与操作.   在Pandas中, 最重要的两种数据结构是1维的Series和2维的DataFrame. Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数

继续访问

Pandas 10. 索引index的用途

更方便的数据查询:df.loc使用index会提升查询性能自动的数据对齐功能;使用index.更多更强大的数据结构支持 很多强大的索引数据结构Categoricallndex,基于分类数据的Index,提升性能;Multilndex,多维索引,用于groupby多维聚合后结果等;Datetimelndex,时间类型索引,强大的日期和时间的方法支持:

继续访问

Pandas的索引index的用途(十一)

1、Pandas的索引index的用途 把数据存储于普通的column列也能用于数据查询,那使用index有什么好处? index的用途总结: 1、更方便的数据查询; 2、使用index可以获得性能提升; 3、自动的数据对齐功能; 4、更多更强大的数据结构支持; 2、实例用途 (1)读取数据 import pandas as pd df = pd.read_csv…

继续访问

python语法基础

1.import 和 from … import 模块的变量、方法引用差异 from pandas import DataFrame from…import // 直接使用函数名使用就可以了 import pandas as pd import //模块.函数 a.import…as import:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径 import A as B:给予工具库 A 一个简单的别称 B ,可以帮助记忆。例:import torc…

继续访问

python数据分析学习(3)

python数据分析·numpy的一些函数

继续访问

Pandas详解三之Index对象

约定 import pandas as pd from pandas import DataFrame import numpy as np Index Index对象保存着索引标签数据,它可以快速找到标签对应的整数下标,其功能与Python的字典类似。 dict1={“Province”:

继续访问

Pandas的索引index的用途

##Pandas的索引index的用途 ”’把数据存储于普通的column列也能用于数据查询,那使用index有什么好处?index的用途总结: 1.更方便的数据查询; 2.使用index可以获得性能提升; 3.自动的数据对齐功能; 4.更多更强大的数据结构支持;”’ import pandas as pd df =pd.read_csv(‘F:\\python387\\pandas\\antlearnpandaaster\\datas\\ml_latest_all\\ratings.csv’.

继续访问

python创建python.py时遇到的问题 name is not defined

创建py文件之后,运行文件时报错: 是一个nameerror,说var为定义,所以执行不成功。这是因为将var定义在了函数里面,即return后一行的代码缩进了,导致var没有定义成功,只需要去除缩进就可以了。 更改如下: …

继续访问

pandas的Index对象

Index对象保存着索引标签数据,它可以快速找到标签对应的整数下标,其功能与Python的字典类似。 dict1={“Province”:, “year”:*4, “pop”:} df1=DataFrame(dict1) df代码结果 Province pop year 0 Guangdong 1.3…

继续访问。

这两个名字没有完整的上下文,如果是数据框(DataFrame)df1和其中的列(Series)df.类别进行比较的话,可以有以下几种情况:- 如果df1.index和df.类别都是索引(index),则它们可以进行比较,例如:“`df1.index == df.类别“`这会返回布尔数组,其中每个元素表示乎吵df1.index和df.类别相应位置的值是否相同。- 如果df1.index是行索引(index),而df.类别是列名,则它们代表不同的东西,不能直接进行比较。如果想对比某一列和df1的行索引,则可以使用loc或iloc方法,例如:“`df1.loc == ‘苹果’“`这会选择df1中行索引为’A’的行,并且只对其兄顷慧中的’类别’列进行比较,返回布尔值表示是否为’苹果’。- 如果df1.index是行索引(index),而df.类别本身就是一列数据,则它们可以先转置,再进行比较,例如:“`df1.T.index == df“`这会把df1转置,变成以羡答列名为索引,行名(原来的df1的索引)为列的数据框,然后和df进行比较,返回布尔数组。

关于读取mnist数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 解密MNIST数据库:手写数字识别神器 (读取mnist数据库)