Main Content

本页采用了机器翻译。点击此处可查看最新英文版本。

绘制神经网络的误差直方图

此示例展示了如何在训练前馈神经网络后可视化目标值和预测值之间的误差。

从气象站 ThingSpeak™ 通道读取数据

ThingSpeak通道12397 包含来自位于马萨诸塞州内蒂克的 MathWorks® 气象站的数据。每分钟收集一次数据。字段 2、3、4 和 6 分别包含风速 (mph)、相对湿度、温度 (F) 和大气压力 (inHg) 数据。使用 thingSpeakRead 函数从通道12397 读取数据。

data = thingSpeakRead(12397,'Fields',[2 3 4 6],'Numpoints',500,'outputFormat','table');

分配输入变量和目标值

分配输入变量,并根据温度和相对湿度计算露点以用作目标。将温度从华氏度转换为摄氏度,并指定水蒸气 (b) 和气压 (c) 的常数。计算中间值“gamma”,并为网络分配目标值。

inputs = [data.Humidity'; data.TemperatureF'; data.PressureHg'; data.WindSpeedmph'];
tempC = (5/9)*(data.TemperatureF-32);
b = 17.62;
c = 243.5;
gamma = log(data.Humidity/100) + b*tempC ./ (c+tempC);
dewPointC = c*gamma ./ (b-gamma);
dewPointF = (dewPointC*1.8) + 32;
targets = dewPointF';

创建并训练两层前馈网络

使用 feedforwardnet 函数创建两层前馈网络。该网络有一个包含 10 个神经元的隐藏层和一个输出层。使用 train 函数使用输入来训练前馈网络。

net = feedforwardnet(10);
[net,tr] = train(net,inputs,targets);

使用经过训练的模型来预测数据

网络经过训练和验证后,您可以使用网络对象来计算网络对任何输入的响应,在本例中为第五个输入数据点的露点。

outputs = net(inputs(:,5))
outputs =

   22.8618

绘制误差直方图

将误差值计算为目标值与预测值之间的差异。

error = targets - outputs;
number_of_bins = 10;
ploterrhist(error,'bins',number_of_bins);

该图显示了包含 10 个箱的误差直方图。

另请参阅

函数