HDU杭电--机器学习实验报告(五)

一、实验目的

• 1、理解图像识别、手写识别的原理;

• 2、掌握Sklearn实现基于MLP的手写识别;

• 3、掌握Sklearn实现基于KNN的手写识别。

二、实验内容与要求

【实验内容】基于MLP的手写识别

手写数字识别是一个多分类问题,共有10个分类,每个手写数字图像的类别标签是0~9中的其中一个数。例如下面这三张图片的标签分别是0,1,2。

利用sklearn来训练一个简单的全连接神经网络,即多层感知机 (Multilayer perceptron,MLP)用于识别数据集DBRHD的手写数字。

MLP的输入:

DBRHD数据集的每个图片是一个由0或1组成的32*32的文本矩阵; 多层感知机的输入为图片矩阵展开的1*1024个神经元。

MLP输出:“one-hot vectors”

一个one-hot向量除了某一位的数字是1以外其余各维度数字都是0。图片标签将表示成一个只有在第n维度(从0开始)数字为1的10维向量。比如,标签0将表示成[1,0,0,0,0,0,0,0,0,0,0]。即,MLP输出层具有10个神经元。

MLP结构:

MLP的输入与输出层,中间隐藏层的层数和神经元的个数设置都将影响该MLP模型的准确率。在本实验中,只设置一层隐藏层,将在后续实验中比较该隐藏层神经元个数为50、100、200时的MLP效果。

【任务介绍】

本实验利用sklearn来训练一个K最近邻(k-Nearest NeighborKNN)

分类器,用于识别数据集DBRHD的手写数字。比较KNN的识别效果与多层感知机的识别效果。

【KNN手写识别实体构建】

• 步骤1:建立工程并导入sklearn包

• 步骤2:加载训练数据

• 步骤3:构建KNN分类器

• 步骤4:测试集评价

三、实验程序与结果

import numpy as np    
from os import listdir
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
def img2vector(fileName):
    retMat = np.zeros([1024],int)
    fr = open(fileName)    
    lines = fr.readlines()   
    for i in range(32):     
        for j in range(32):  
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值