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

发布于:2024-05-06 ⋅ 阅读:(23) ⋅ 点赞:(0)


前言

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

在这里插入图片描述

环境准备

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

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

数据导入和处理

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

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

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

randomIndices = randperm(103);
...

数据归一化

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

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

神经网络的创建与训练

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

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

预测与评估

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

...
predictedTrainingResponses = sim(net, normalizedTrainingInputs);
...

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

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

结果可视化

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

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

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

应用

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

结论

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