首页 > 编程知识 正文

python识别数字的库,txt文件手写数字python

时间:2023-05-04 18:04:54 阅读:25598 作者:1903

手写数字识别是经典的机器学习问题,通过识别手写图像来判断数字

因为数字类别是0——9,所以是足够种类的问题

本文以KNN算法为例实现手写数字的识别

关于文章目录的低维手写数字识别load_digits配置文件调用索引,以第0个要素为例:使用KNN预测训练和高维手写数字识别导入数据集reshape数据集的特征低维手写数字识别

sklearn有附带的手写数字数据集,将在datasets.load_digits ) )中调用

load_digits摘要load_digits返回的digits数据集有1797个数据,数据的维度为64

digits是Bunch类型的类字典对象,可以使用索引调用

要调用fromsklearnimportdatasetsdigits=datasets.load _ digits ()索引digits,有五个部分:data)数据其中,各元素是64维向量3358www,其中,各元素是88矩阵images:与各数据对应的标签target:所有类别标签

以第0个要素为例,64维向量

88矩阵大致可以看出数字‘0’的轮廓

可以在plt.imshow ()中可视化images

数据类别标签

模型预测结果:

使用KNN进行训练和预测,分割数据集,使用训练集训练KNN,然后使用测试集测试性能

froms klearn.model _ selectionimporttrain _ test _ splitfromsklearn.neighborsimportkneighborsclassifierx _ train,x__ y _ test=train _ test _ split (digits (数据),digits (target ) ) KNN=kneighborsclassifier (KNN.fit ) ) ) KNN

可见model.score(x_test,y_test )的正确率很高。

高维手写数字识别导入数据集从本地导入到mnist.npy文件中

import numpy as npx_train,x_test,y_train,y _ test=NP.load (数据/Mn ist/Mn ist.npy ',allow_pickle

测试集中的shape :

reshape数据集查看数据的shape,并发现每个数据都是2828的矩阵

因为不能直接运算矩阵,所以需要将矩阵变换为784的向量

# reshape训练集n_samples,n1,N2=x _ train.shapex _ train=x _ train.reshape (n _ samples,n1*n2 ).as

降低特征维度的训练集有60000个数据,这需要很长时间,可以降低维度以减少执行时间

应用PCA主成分分析,降维至64维

#特征降维froms klearn.decompositionimportpcapca=PCA (n _ components=64 ) de com _ x _ train=PCA.fit _ transform ) x

使用降维的训练集样本进行训练

KNN=kneighborsclassifier (KNN.fit ) decom_x_train,y_train ) KNN.score ) decom_x_test,y_test是

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。