【深入理解神经网络:预测和评估】

文章目录

  • 前言
    • 环境准备
    • 数据导入和处理
    • 数据归一化
    • 神经网络的创建与训练
    • 预测与评估
    • 结果可视化
    • 应用
    • 结论


前言

  在这篇博客文章中,我们将深入研究利用神经网络进行数据预测和性能评估的过程。我们将详解在MATLAB环境下使用的一个例子,该例子展示了如何使用MATLAB的神经网络工具箱来处理数据、训练神经网络模型、进行预测以及评估模型的性能。文中仅展示简要代码,完整代码请见博主的资源:https://download.csdn.net/download/weixin_51352614/89231670

在这里插入图片描述

环境准备

  在开始任何数据分析工作之前,我们首先需要准备我们的环境。这涉及到关闭任何不需要的警告信息、关闭已打开的图形窗口、清除变量以及清空命令行。这些步骤可以确保我们从一个干净的状态开始,避免之前的工作影响到当前的分析。

matlab">warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

数据导入和处理

  随后我们导入数据集,通常在MATLAB中可以通过xlsread函数从Excel文件中直接读取数据。假定数据集包含了103个样本,每个样本包括7个输入特征和1个目标输出。

matlab">dataSet = xlsread('数据集.xlsx');

  在数据集被导入之后,我们需要将数据分为训练集和测试集。这里我们使用了随机打乱样本的索引,并选择了前80个样本作为训练集,剩余的样本作为测试集。

matlab">randomIndices = randperm(103);
...

数据归一化

  为了提高训练效率和模型性能,我们通常会对输入和输出数据进行归一化处理,使其范围在0到1之间。这在神经网络训练中是一个常见的做法。在我们的例子中,使用了mapminmax函数来完成这一任务。

matlab">...
[normalizedTrainingInputs, inputNormalizationSettings] = mapminmax(trainingInputs, 0, 1);
...

神经网络的创建与训练

  在数据准备工作完成之后,我们创建了一个前馈神经网络newff),并设置了训练参数如迭代次数、误差阈值和学习率。之后,我们使用归一化的训练数据对网络进行训练(train函数)。

matlab">net = newff(normalizedTrainingInputs, normalizedTrainingTargets, 5);
...
net = train(net, normalizedTrainingInputs, normalizedTrainingTargets);

预测与评估

  训练完成后,我们使用训练好的网络对训练和测试数据集进行预测。预测之后,我们会将归一化的预测结果反归一化回原始的数据范围。

matlab">...
predictedTrainingResponses = sim(net, normalizedTrainingInputs);
...

  为了评估模型的性能,我们计算了多个统计指标,包括均方根误差(RMSE)、平均绝对误差(MAE)、平均偏差误差(MBE)以及确定系数(R²)。这些指标为我们提供了模型预测准确度的不同视角。

matlab">...
disp(['训练集数据的R2为:', num2str(R2Training)])
...

结果可视化

  为了更直观地展示模型的预测结果,我们绘制了两个图表,分别对比了训练集和测试集的真实值与预测值。此外,我们还绘制了散点图来展示预测值与真实值之间的关系,这些图表对于理解模型的预测能力非常有帮助。

matlab">figure
plot(1:numTrainingSamples, trainingTargets, 'r-*', ...)
...

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用

  以上展示的流程不仅限于特定的数据集或问题,它可以广泛应用于需要监督学习的多种场合。不管是金融市场预测、医药研究中的疾病检测、还是工业制造中的质量控制,这个过程都是非常相似的。关键在于理解每一步骤,并正确调整参数以适应不同的数据和需求。

结论

  通过这个例子,我们可以看到如何使用MATLAB的神经网络工具箱从头到尾完成一个预测模型的创建、训练和评估。这个过程涉及了数据预处理、模型建立、训练调优以及结果分析等关键步骤。掌握这些技能对于任何希望在数据科学领域取得进展的人来说都是非常重要的。


http://www.ppmy.cn/embedded/34594.html

相关文章

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势

第 10 场蓝桥杯小白入门赛题解

1.五一礼物【算法赛】 - 蓝桥云课 (lanqiao.cn) #include <iostream> using namespace std; int main() {cout<<"51"<<endl;return 0; }2.合成贤者之石【算法赛】 - 蓝桥云课 (lanqiao.cn) 假设黄水晶的个数是 x x x,那蓝水晶个数肯定是 x − 1 …

WSL2连接Windows主机的Mysql

文章目录 需求查看主机IP防火墙设置Mysql设置允许远程连接WSL2连接Mysql 需求 在WSL2&#xff08;本机Ubuntu20.04&#xff09;运行的程序需要将数据写入到本机的Mysql服务器中 查看主机IP 两种办法&#xff1a; Windows主机输入 ipconfig&#xff0c;找到带有WSL后缀的部分…

室外巡检机器人——A2型高防护轮式巡检机器人

在科技日新月异的时代&#xff0c;室外巡检机器人犹如一位无畏的守护者&#xff0c;悄然出现在我们的视野之中。它迈着坚定的步伐&#xff0c;穿梭于各种复杂的室外环境&#xff0c;承担着重要的巡检任务。它是科技与智慧的结晶&#xff0c;是保障安全与稳定的前沿力量。让我们…

基于Java的智慧社团综合管理系统的设计与实现(论文+源码)_kaic

摘 要 随着校园文化的不断丰富&#xff0c;大学里各种社团越来越多&#xff0c;社团活动也越来越频繁&#xff0c;社员也越来越多&#xff0c;而且大学生退社、入社比较频繁&#xff0c;社团管理就显得非常繁琐而又复杂,如果采用人工管理,对管理员来说将是一件很头疼的事情。设…

FR在开发组件时的注意事项

FR目前可以在三个地方开发自己的组件&#xff0c;普通报表参数面板上&#xff0c;普通报表填报下&#xff0c;决策系统中。 其中普通报表参数面板&#xff0c;决策系统中开发组件的属性是返回 CRPropertyDescriptor[] supportedDescriptor() 这种方式是提供属性的名字&#x…

proxmox宿主机安装桌面

装完proxmox启动后一般进入shell界面&#xff0c;之后都是另外一台电脑连接web管理等操作&#xff0c;一直用起来还好。不过这样需要另外一台电脑连接管理操作&#xff0c;有时候调试时毕竟还是会有些不方便&#xff0c;就想能不能在宿主机上装个桌面做这类事&#xff0c;今天用…

Java面试题:多线程1

线程和进程的区别 进程 程序由指令和数据组成 指令的运行和数据的读写依赖于将指令加载到CPU,数据加载到内存,在指令运行过程中还需要用到IO设备 进程就是用以加载指令,管理内存,管理IO的 当一个程序被运行,从磁盘加载这个程序的代码到内存,就开启了一个线程 多实例进程和…

Microsoft Remote Desktop Beta for Mac:远程办公桌面连接工具

Microsoft Remote Desktop Beta for Mac不仅是一款远程桌面连接工具&#xff0c;更是开启远程办公新篇章的利器。 它让Mac用户能够轻松访问和操作远程Windows计算机&#xff0c;实现跨平台办公的无缝衔接。无论是在家中、咖啡店还是旅途中&#xff0c;只要有网络连接&#xff0…

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因&#xff1a;VMware自动选择的网卡可能不对 解决&#xff1a;编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡&#xff0c;断开虚拟机网络连接后重新连接即可

php扩展

查看扩展: print_r(get_loaded_extensions());判断扩展: if (!extension_loaded(gd)) {if (!dl

解决虚拟机unbantu2204访问网络失败问题?

一、问题描述 unbantu先前可以正常访问网络&#xff0c;后面用着用着发现上不了网了&#xff0c; 出现如下异常 Hmm. We’re having trouble finding that site.We can’t connect to the server at www.iqiyi.com.If you entered the right address, you can:Try again late…

Linux 内核简介

操作系统简介 操作系统概念&#xff1a;操作系统处于硬件和应用程序的中间层&#xff0c;控制和管理整个计算机系统的硬件和软件资源&#xff0c;提供给用户和其他软件方便的接口和环境&#xff0c;它是计算机系统的最基本的系统软件。 操作系统功能: 处理机管理存储器管理设…

Bookends for Mac:文献管理工具

Bookends for Mac&#xff0c;一款专为学术、研究和写作领域设计的文献管理工具&#xff0c;以其强大而高效的功能深受用户喜爱。这款软件支持多种文件格式&#xff0c;如PDF、DOC、RTF等&#xff0c;能够自动提取文献的关键信息&#xff0c;如作者、标题、出版社等&#xff0c…

c语言:打印任意行数的菱形

例如&#xff1a;以下图片形式 #include <stdio.h> int main() {int line 0;scanf_s("%d", &line);int i 0;//打印上半部分for (i 0; i < line; i){//打印空格数int j 0;for (j 0; j < line - 1 - i; j){printf(" ");}//打印*数量for…

STM32F1之FLASH闪存

目录 1. 简介 2. 闪存模块组织 3. FLASH基本结构 4. FLASH解锁 5. 使用指针访问存储器 6. 程序存储器全擦除 7. 程序存储器页擦除 8. 程序存储器编程 9. 选项字节 1. 简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过…

C#条件运算符

条件运算符分为&#xff1a;&#xff08;比较运算符 判断运算符&#xff09; 条件运算符的作用: 用于比较两个变量或者常量 判断符号: > < ! > < 条件运算符不能直接使用 需要搭配运算符使用 <u>*如果条件满足则返回true 条件不满足则返回fals…

量子计算编程框架Forest

一、介绍 Forest是由Rigetti Computing开发的一个量子计算编程框架。Forest包括两个主要组件:PyQuil和Quil。PyQuil是Forest的Python库,用于编写和运行量子程序。它提供了一系列的API,可以用于定义量子电路、操作量子比特和测量量子比特等。通过PyQuil,用户可以使用Python…

指向函数的指针

目录 typedef指向函数的指针 typedef typedef 在 C 语言中用于为类型创建别名&#xff0c;它使得程序员能够用新的名称来表示已有的类型&#xff0c;从而提高代码的可读性和可维护性。以下是 typedef 的几种常见用法&#xff1a; 1.创建类型别名 typedef unsigned int uint;…

Ansible之性能调优

有很多人说Ansible的执行效率比SaltStack差&#xff0c;确实&#xff0c;默认使用的SSH方式通信&#xff0c;效率远低于SaltStack的zeromq消息队列。但是我们可以优化Ansible的执行速度&#xff0c;可以做到并不比SaltStack差。 1. 开启SSH长连接 在OpenSSH 5.6版本后&#xf…