当前位置: 首页 > news >正文

神经网络实验——MLP

目录

1 目的

2 方法

3 源代码

4 结果


1 目的

①熟悉 Python 的输入输出流;
②学会使用 matplotlib进行图像可视化;
③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器;
④学会使用网格查找进行超参数优化。

2 方法

①读取并解压 mnist.gz文件,并区分好训练集与测试集;
②查看数据结构,对手写字符进行可视化展示;
③构建多层感知机神经网络模型,并使用网格查找出最优参数;
④输出模型的最优参数以及模型的预测精度。

3 源代码

①启动 Spyder,新建.py 文件,加载试验所需模块

# 导入相关模块
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import GridSearchCV
import numpy as np
import pickle
import gzip
import matplotlib. pyplot as plt

②加载数据,数据文件保存在 mnist.gz 安装包中,因此需要对文件进行解压后对文件进行读取,且区分训练集、测试集与验证集

#解压数据并进行读取
with gzip.open(r"D:\大二下\数据挖掘\神经网络\mnist.gz") as fp:training_data, valid_data, test_data= pickle.load(fp,encoding='bytes') 
#区分训练集与测试集
X_training_data,y_training_data= training_data
X_valid_data,y_valid_data= valid_data
X_test_data, y_test_data= test_data

③查看数据的结构,为后续建模做准备:

#定义函数show_data_struct 用于展示数据的结构
def show_data_struct():print(X_training_data.shape,y_training_data.shape)print(X_valid_data.shape,y_valid_data.shape)print(X_test_data.shape,y_test_data.shape)print(X_training_data[0])print(y_training_data[0])
#使用show_data_struct 函数进行数据展示
show_data_struct()

④为了更好地了解数据的形态,对手写字符进行可视化展示

#定义函数用于可视化字符的原有图像
def show_image():plt.figure(1)for i in range(10):image=X_training_data[i]pixels=image.reshape((28,28))plt.subplot(5,2,i+1)plt.imshow(pixels,cmap='gray')plt.title(y_training_data[i])plt.axis('off')plt.subplots_adjust(top=0.92,bottom=0.08,left=0.10,right=0.95, hspace=0.45,wspace=0.85)plt.show()
#使用show_image函数进行图像展示
show_image()

⑤构建参数字典,用于后续使用网格查找进行超参数优化

#字典中用于存放的 MLPClassifier 函数的参数列表
mlp_clf__tuned_parameters= {"hidden_layer_sizes":[(100,),(100,30)],"solver":[' adam', 'sgd', 'bfgs'],"max_iter":[20],"verbose":[True]}

⑥使用MLPClassifier 丽数构建多层感知机神经网络,并使用GridSearchCV 网格查找进行超参数优化,找出最合适的参数

#构建多层感知机分类器
mlp=MLPClassifier()
#通过网格查找出最优参数
estimator= GridSearchCV(mlp,mlp_clf__tuned_parameters,n_jobs=6)
#拟合模型
estimator.fit(X_training_data, y_training_data)
#输出最优参数
print(estimator.best_params_)
#输出模型的预测精度
print(estimator.score(X_test_data, y_test_data))

4 结果

(50000, 784) (50000,)

(10000, 784) (10000,)

(10000, 784) (10000,)

[0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.01171875 0.0703125  0.0703125  0.0703125

 0.4921875  0.53125    0.68359375 0.1015625  0.6484375  0.99609375

 0.96484375 0.49609375 0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.1171875  0.140625   0.3671875  0.6015625

 0.6640625  0.98828125 0.98828125 0.98828125 0.98828125 0.98828125

 0.87890625 0.671875   0.98828125 0.9453125  0.76171875 0.25

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.19140625

 0.9296875  0.98828125 0.98828125 0.98828125 0.98828125 0.98828125

 0.98828125 0.98828125 0.98828125 0.98046875 0.36328125 0.3203125

 0.3203125  0.21875    0.15234375 0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.0703125  0.85546875 0.98828125

 0.98828125 0.98828125 0.98828125 0.98828125 0.7734375  0.7109375

 0.96484375 0.94140625 0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.3125     0.609375   0.41796875 0.98828125

 0.98828125 0.80078125 0.04296875 0.         0.16796875 0.6015625

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.0546875  0.00390625 0.6015625  0.98828125 0.3515625

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.54296875 0.98828125 0.7421875  0.0078125  0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.04296875

 0.7421875  0.98828125 0.2734375  0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.13671875 0.94140625

 0.87890625 0.625      0.421875   0.00390625 0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.31640625 0.9375     0.98828125

 0.98828125 0.46484375 0.09765625 0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.17578125 0.7265625  0.98828125 0.98828125

 0.5859375  0.10546875 0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.0625     0.36328125 0.984375   0.98828125 0.73046875

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.97265625 0.98828125 0.97265625 0.25       0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.1796875  0.5078125  0.71484375 0.98828125

 0.98828125 0.80859375 0.0078125  0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.15234375 0.578125

 0.89453125 0.98828125 0.98828125 0.98828125 0.9765625  0.7109375

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.09375    0.4453125  0.86328125 0.98828125 0.98828125 0.98828125

 0.98828125 0.78515625 0.3046875  0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.08984375 0.2578125  0.83203125 0.98828125

 0.98828125 0.98828125 0.98828125 0.7734375  0.31640625 0.0078125

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.0703125  0.66796875

 0.85546875 0.98828125 0.98828125 0.98828125 0.98828125 0.76171875

 0.3125     0.03515625 0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.21484375 0.671875   0.8828125  0.98828125 0.98828125 0.98828125

 0.98828125 0.953125   0.51953125 0.04296875 0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.53125    0.98828125

 0.98828125 0.98828125 0.828125   0.52734375 0.515625   0.0625

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.         0.         0.

 0.         0.         0.         0.        ]

5

通过观察数据结构可知,数据由 10000个样本组成,其中每一个样本是由784(28*28)个像素组成的图像,像素黑白用 0/1 进行表示,对应的label目标变量的每个字符图像的真实标签。

由图可知,MNIST数据由手写字符图像和标签组成。

通过对 MLP分类器的学习可见,模型经过 20次迭代,loss 不断减少0.2320587后达到拟合状态。

由输出结果可见,通过 GridSearchCV 网格查到的最优参数为:隐藏层数为(100,30),最大池化层为 20,激活函数为sgd;且此时多层感知机神经网络MNIST手写字符识别的准确率达到了 0.9347。

相关文章:

神经网络实验——MLP

目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…...

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...

dify-AI 私有部署可修改前端页面

dify文档 官方文档:欢迎使用 Dify | Dify 源码:https://github.com/langgenius/dify.git 安装docker 官网:https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…...

使用 @Results 注解来手动指定字段映射

在 MyBatis 中,Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 Results 和 Result 注解来精确控制每一列与类属性之间的映射关系。 示例:使用 Results 注解来手动指定字段映射 假设你…...

数据治理中 大数据处理一般都遵循哪些原则

在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…...

从0到1:STM32温控系统开发踩坑指南

1. 设计目标 核心功能&#xff1a;实现0-100℃范围内的温度闭环控制 性能指标&#xff1a; 测量精度&#xff1a;0.5℃&#xff08;使用DS18B20传感器&#xff09; 控制响应时间&#xff1a;<5秒 显示分辨率&#xff1a;0.1℃ 扩展功能&#xff1a; LCD实时显示当前温度…...

修改时无条件,可以自定义id条件(通过查询)

在这段代码中&#xff0c;$(row).attr(data-rarity, data.rarity); 的作用是给表格的每一行 (row) 添加一个 data-rarity 的自定义属性&#xff0c;属性的值是该行数据中的 rarity 字段。 解释&#xff1a; 1.row 是当前行的 DOM 元素。 2.data.rarity 是从 data 对象中获取的…...

工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!

在工业制造领域&#xff0c;能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进&#xff0c;如何实现高效能耗管理&#xff0c;成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台&#xff0c;结合其自研的硬件产品&#xff0c;为工业制造企业提供…...

实现一个简单的协同过滤推荐算法

题目描述&#xff1a; 协同过滤是推荐系统中的一种常用技术&#xff0c;其基本思想是利用用户之间的相似性或物品之间的相似性来进行推荐。本次面试题要求实现一个基于用户的协同过滤推荐算法。 具体要求&#xff1a; 定义两个类&#xff1a;User 和 Item&#xff0c;分别表示用…...

eNSP防火墙综合实验

一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...

操作系统知识(二)

1、线程切换进行了哪些动作 在操作系统中&#xff0c;线程切换&#xff08;也称为上下文切换&#xff09;是指操作系统将 CPU 的控制权从一个线程转移到另一个线程的过程。这个过程涉及多个步骤和动作&#xff0c;主要包括以下几个方面&#xff1a; 1. 保存当前线程的上下文 …...

图论:tarjan 算法求解强连通分量

题目描述 有一个 n n n 个点&#xff0c; m m m 条边的有向图&#xff0c;请求出这个图点数大于 1 1 1 的强连通分量个数。 输入格式 第一行为两个整数 n n n 和 m m m。 第二行至 m 1 m1 m1 行&#xff0c;每一行有两个整数 a a a 和 b b b&#xff0c;表示有一条…...

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念&#xff0c;另外一个核心的概念是AOP。官网上&#xff0c;Bean的解释是&#xff1a; In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…...

专利申请要求

专利申请并不要求发明已经实际制造出来&#xff0c;但需要具备完整且可行的技术方案。以下是详细的解释和申请流程&#xff1a; 一、专利申请的核心要求 技术方案而非实物 专利保护的是创新性的技术方案或设计理念&#xff0c;而非实物产品本身。只要你能清晰描述技术原理、结构…...

解锁 JavaScript 异步编程:Promise 链式操作、async/await 与 Promise.all 深度剖析

1.引言 在 JavaScript 的世界里,异步编程是一个核心且关键的概念。随着 Web 应用的复杂度不断提升,处理多个异步操作的需求也日益增长。传统的回调函数方式容易陷入 “回调地狱”,让代码的可读性和可维护性大打折扣。而 Promise 的出现为异步编程带来了新的曙光,后续又衍生…...

Centos虚拟机扩展磁盘空间

Centos虚拟机扩展磁盘空间 扩展前后效果1 虚拟机vmware关机后&#xff0c;编辑2 扩展2.1 查看2.2 新建分区2.3 格式化新建分区ext42.3.1 格式化2.3.2 创建2.3.3 修改2.3.4 查看 2.4 扩容2.4.1 扩容2.4.1 查看 扩展前后效果 df -h1 虚拟机vmware关机后&#xff0c;编辑 2 扩展 …...

记录一次部署PC端网址全过程

当我查看我之前写的文章时、顿时惊奇发出感慨&#xff1a;啥时候写的&#xff1f;是我写的么&#xff1f;疑惑重重… 所以说&#xff0c;好记性不如烂笔头。 记录一次部署PC端网址全过程 部署PC端网址分是三步&#xff1a;第一步&#xff1a;申请域名并映射到外网IP &#xff0…...

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域&#xff0c;棋盘检测与透视变换是一个常见的任务&#xff0c;广泛应用于 摄像机标定、文档扫描、增强现实&#xff08;AR&#xff09; 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测&#xff0c;并…...

Java Spring boot 篇:常用注解

Configuration 作用 Configuration 注解的核心作用是把一个类标记为 Spring 应用上下文里的配置类。配置类就像一个 Java 版的 XML 配置文件&#xff0c;能够在其中定义 Bean 定义和 Bean 之间的依赖关系。当 Spring 容器启动时&#xff0c;会扫描这些配置类&#xff0c;解析其…...

#渗透测试#批量漏洞挖掘#Apache Log4j反序列化命令执行漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 Apache Log4j反序列化命令执行漏洞 一、…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...