实验四:Matlab神经网络以及应用于汽油辛烷值预测
专业年级: 2014级信息与计算科学1班 姓名: 黄志锐 学号:201430120110
一、实验目的
1. 掌握MATLAB创建BP神经网络并应用于拟合非线性函数 2. 掌握MATLAB创建REF神经网络并应用于拟合非线性函数 3. 掌握MATLAB创建BP神经网络和REF神经网络解决实际问题 4. 了解MATLAB神经网络并行运算
二、实验内容
1. 建立BP神经网络拟合非线性函数
2y?x12?x2
第一步 数据选择和归一化
根据非线性函数方程随机得到该函数的2000组数据,将数据存贮在data.mat文件中(下载后拷贝到Matlab当前目录),其中input是函数输入数据,output是函数输出数据。从输入输出数据中随机选取1900中数据作为网络训练数据,100组作为网络测试数据,并对数据进行归一化处理。 第二步 建立和训练BP神经网络
构建BP神经网络,用训练数据训练,使网络对非线性函数输出具有预测能力。
第三步 BP神经网络预测
用训练好的BP神经网络预测非线性函数输出。 第四步 结果分析
通过BP神经网络预测输出和期望输出分析BP神经网络的拟合能力。
详细MATLAB代码如下: BP.m: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 clc;clear %% 训练数据预测数据提取及归一化 % 载入输入输出数据 load data input output % 从1到2000间随机排序 k = rand(1, 2000); [m, n] = sort(k); % 找出训练数据和预测数据 input_train = input(n(1:1900), :)'; output_train = output(n(1:1900)); input_test = input(n(1901:2000), :)'; output_test = output(n(1901:2000)); %选连样本输入输出数据归一化 [inputn, inputps] = mapminmax(input_train); [outputn, outputps] = mapminmax(output_train); %% 构建和训练BP神经网络 % BP神经网络构建 net = newff(inputn, outputn, 5); % 网络参数配置(迭代次数,学习率,目标) net.trainParam.epochs = 100; net.trainParam.lr = 0.1; net.trainParam.goal = 0.00004; % 网络训练,并记录训练时间 tic; % start time record net = train(net, inputn, outputn); t1 = toc; % (end-start) time record 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
disp(['神经网络的训练时间为', num2str(t1), '秒']); %% BP网络预测 % 预测数据归一化
inputn_test = mapminmax('apply', input_test, inputps); % 网络预测输出
an = sim(net, inputn_test); % 网络输出反归一化
BPoutput = mapminmax('reverse', an, outputps); %% 结果分析 figure(1);
plot(BPoutput, ':og'); hold on;
plot(output_test, '-*'); legend('预测输出', '期望输出');
title(' BP网络预测输出', 'fontsize', 12); ylabel('函数输出', 'fontsize', 12); xlabel('样本', 'fontsize', 12); % 预测误差
error = BPoutput-output_test; figure(2);
plot(error, '-*');
title(' BP神经网络预测误差', 'fontsize', 12); ylabel('误差', 'fontsize', 12); xlabel('样本', 'fontsize', 12); figure(3);
plot((output_test-BPoutput)./BPoutput, '-*'); title(' BP神经网络预测误差百分比'); errorsum = sum(abs(error));
相关推荐: