mlp与knn0~9手写数字识别(代码片段)

404detective 404detective     2022-12-28     325

关键词:



















import numpy as np     #导入numpy工具包
from os import listdir #使用listdir模块,用于访问本地文件
from sklearn.neural_network import MLPClassifier 
from sklearn.neighbors import KNeighborsClassifier

def img2vector(fileName):    
    '''将加载的32*32的图片矩阵展开成一列向量'''
    retMat = np.zeros([1024],int) #定义返回的矩阵,大小为1*1024
    fr = open(fileName)           #打开包含32*32大小的数字文件 
    lines = fr.readlines()        #读取文件的所有行
    for i in range(32):           #遍历文件所有行
        for j in range(32):       #并将01数字存放在retMat中     
            retMat[i*32+j] = lines[i][j]    
    return retMat

def readDataSet(path):    
    '''加载训练数据,并将样本标签转化为one-hot向量'''
    fileList = listdir(path)    #获取文件夹下的所有文件 
    numFiles = len(fileList)    #统计需要读取的文件的数目
    dataSet = np.zeros([numFiles,1024],int) #用于存放所有的数字文件
    hwLabels = np.zeros([numFiles,10])      #用于存放对应的one-hot标签
    for i in range(numFiles):   #遍历所有的文件
        filePath = fileList[i]  #获取文件名称/路径      
        digit = int(filePath.split('_')[0])  #通过文件名获取标签,注意类型转换      
        hwLabels[i][digit] = 1.0        #将对应的one-hot标签置1
        dataSet[i] = img2vector(path +'/'+filePath) #读取文件内容   
    return dataSet,hwLabels

#读取训练集
train_dataSet, train_hwLabels = readDataSet('E:\\Desktop\\python_code\\sklearn\\课程数据\\手写数字\\\\trainingDigits')

'''
构建神经网络:设置网络的隐藏层数、各隐藏层神经元个数、激活函数、学习率、优化方法、最大迭代次数。

设置含100个神经元的隐藏层,hidden_layer_sizes 存放的是一个元组,表示第i层隐藏层里神经元的个数
使用logistic激活函数和adam优化方法,并令初始学习率为0.0001,
'''
clf = MLPClassifier(hidden_layer_sizes=(100,),
                    activation='logistic', solver='adam',
                    learning_rate_init = 0.0001, max_iter=2000)
print(clf)
'''
fit函数能够根据训练集及对应标签集自动设置多层感知机的输入与输出层的神经元个数
例如train_dataSet为n*1024的矩阵,train_hwLabels为n*10的矩阵,则fit函数将MLP的输入层神经元个数设为1024,输出层神经元个数为10
'''

clf.fit(train_dataSet,train_hwLabels)


#KNN
#knn = KNeighborsClassifier(algorithm='kd_tree', n_neighbors=3)
#knn.fit(train_dataSet, train_hwLabels)

#读取测试集
dataSet,hwLabels = readDataSet('E:\\Desktop\\python_code\\sklearn\\课程数据\\手写数字\\\\testDigits')
res = clf.predict(dataSet)   #对测试集进行预测
error_num = 0                #统计预测错误的数目
num = len(dataSet)           #测试集的数目
for i in range(num):         #遍历预测结果
    #比较长度为10的数组,返回包含01的数组,0为不同,1为相同
    #若预测结果与真实结果相同,则10个数字全为1,否则不全为1
    if np.sum(res[i] == hwLabels[i]) < 10: 
        error_num += 1                     
print("Total num:",num," Wrong num:", \\
      error_num,"  WrongRate:",error_num / float(num))






而且该训练KNN在运行速度上比MLP快很多

mlp与knn0~9手写数字识别(代码片段)

importnumpyasnp#导入numpy工具包fromosimportlistdir#使用listdir模块,用于访问本地文件fromsklearn.neural_networkimportMLPClassifierfromsklearn.neighborsimportKNeighborsClassifierdefimg2vector(fileName):'''将加载的32*32的图片矩阵展开成一列向量''... 查看详情

4.2tensorflow多层感知器mlp识别手写数字最易懂实例代码(代码片段)

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:https://www.cnblogs.com/bclshuai/p/11380657.html1.1 多层感知器MLP(multilayerperception)1.1.1         多层感知器的结构除了输... 查看详情

深度学习手写数字识别tensorflow2实验报告(代码片段)

实验一:手写数字识别一、实验目的利用深度学习实现手写数字识别,当输入一张手写图片后,能够准确的识别出该图片中数字是几。输出内容是0、1、2、3、4、5、6、7、8、9的其中一个。二、实验原理(1)采... 查看详情

mnist数据集手写体识别(mlp实现)(代码片段)

...nsorflowPython基础资料下载链接:深度学习基础网络模型(mnist手写体识别数据集)MNIST数据集手写体识别(MLP实现)importtensorflowastfimporttensorflow.examples.tutorials.mnist.input_dataasinput_data#导入 查看详情

用pytorch实现多层感知机(mlp)(全连接神经网络fc)分类mnist手写数字体的识别(代码片段)

1.导入必备的包1importtorch2importnumpyasnp3fromtorchvision.datasetsimportmnist4fromtorchimportnn5fromtorch.autogradimportVariable6importmatplotlib.pyplotasplt7importtorch.nn.functionalasF8fromtorch.utils.da 查看详情

百度paddlepaddle入门-9(代码片段)

本节介绍使用飞桨快速实现“手写数字识别”的建模方法。与“房价预测”的案例类似,我们以同样的标准结构实现“手写数字识别”的建模。在后续的课程中,该标准结构会反复出现,逐渐加深我们对深度学... 查看详情

使用paddlepaddle进行手写数字识别(代码片段)

导读MNIST手写数字数据集作为深度学习入门的数据集是我们经常都会使用到的,包含了0~9共10个数字类别的图片,每张图片的大小为28X28,一共包含了60000张训练集图片和10000张测试集图片。使用PaddlePadlle进行手写数字... 查看详情

tensorflow与flask结合打造手写体数字识别(代码片段)

TensorFlow与Flask结合打造手写体数字识别主要步骤:获取mnist数据集分别创建regression和convolution的模型,设置对应的计算方式、参数等信息创建regression、convolution获取数据,调用对应模型进行训练、测试最后保存对应模型创建mnist... 查看详情

计算机视觉(cv)sklearn之分类算法与手写数字识别(代码片段)

【计算机视觉(CV)】sklearn之分类算法与手写数字识别(文章目录)前言(一)、任务描述数据介绍数据读取与存储形式sklearn分类模型代码实现与结果(二)、环境配置本实践代码运行的环境配置如下:Python版本为3.7,PaddlePaddle版本为2.... 查看详情

mnist手写数字识别tensorflow(代码片段)

Mnist手写数字识别Tensorflow任务目标了解mnist数据集搭建和测试模型编辑环境操作系统:Win10python版本:3.6集成开发环境:pycharmtensorflow版本:1.*了解mnist数据集mnist数据集:mnist数据集下载地址??MNIST数据集来自美国国家标准与技术研究所,... 查看详情

手把手写深度学习:用最简单的神经网络多层感知机识别数字

...这一讲从基础的多层感知机原理出发,搭建一个能够识别手写数字的MLP。众所周知,深度学习是一门工程学,我们从基础的MLP出发,一步一步手把手调参,在实践中感受调参的乐趣,优化baseline的效果。目录多层感知机原理为什... 查看详情

手把手写深度学习:用最简单的神经网络多层感知机识别数字

...这一讲从基础的多层感知机原理出发,搭建一个能够识别手写数字的MLP。众所周知,深度学习是一门工程学,我们从基础的MLP出发,一步一步手把手调参,在实践中感受调参的乐趣,优化baseline的效果。目录多层感知机原理为什... 查看详情

java实现bp神经网络mnist手写数字识别(代码片段)

...器训练后使客户端直接使用训练结果,界面有画板,可以手写数字Java实现BP神经网络MNIST手写数字识别如果需要源码,请在下方评论区留下邮箱,我看到就会发过去一、神经网络的构建(1):构建神经网络层次结构由训练集数据可... 查看详情

pytorch实现手写数字识别(代码片段)

PyTorch实现手写数字识别使用Pytorch实现手写数字识别1.思路和流程分析2.准备训练集和测试集2.1torchvision.transforms的图形数据处理方法2.1.1torchvision.transforms.ToTensor2.1.2torchvision.transforms.Normalize(mean,std)2.1.3torchvision.transforms.Com 查看详情

手写数字识别基于matlabguisvm手写数字识别含matlab源码676期(代码片段)

一、简介支持向量机(SupportVectorMachine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。1数学部分1.1二维空间2算法部分二... 查看详情

基于tensorflow的手写数字识别代码(代码片段)

基于tensorflow的手写数字识别代码fromkeras.utilsimportto_categoricalfromkerasimportmodels,layers,regularizersfromkeras.optimizersimportRMSpropfromkeras.datasetsimportmnist(train_images,train_labels),(test_images, 查看详情

用pytorch构建基于卷积神经网络的手写数字识别模型(代码片段)

...集介绍与分析二、卷积神经网络三、基于卷积神经网络的手写数字识别一、MINST数据集介绍与分析        MINST数据库是机器学习领域非常经典的一个数据集,其由Yann提供的手写数字数据集构成,包含了0-9共10类手写数... 查看详情

c_cpp手写数字识别(代码片段)

查看详情