bp神经网络MATLAB程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%清空环境变量
clc
clear
%读取数据
a=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\one-input.csv'); b=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\output.csv');
c=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\c.csv');
save data1.mat b
save data2.mat a
load data1
load data2
%节点个数
inputnum=42;
hiddennum=8;
outputnum=1;
%训练数据和预测数据
input_train=a(:,1:90);
input_test=a(:,91:137);
output_train=b(:,1:90);
output_test=b(:,91:137);
%将训练样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%构建BP神经网络
net=newff(inputn,outputn,[20,12],{'tansig','purelin'},'traingdx');
net.trainParam.epochs=1000;
net.trainParam.lr=0.01;
net.trainParam.goal=0.00000001;
%BP神经网络训练
net=train(net,inputn,outputn);
%测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);
%BP神经网络预测
an=sim(net,inputn_test);
%%网络得到数据反归一化
BPoutput=mapminmax('reverse',an,outputps);
d=BPoutput>c
figure(1)
%plot(d,':og');
scatter(1:(137-90),d,'rx');
hold on;
%plot(output_test,'-*');
scatter(1:(137-90),output_test,'o');
legend('预测输出','期望输出','fontsize',12);
title('BP网络预测输出','fontsize',12);
xlabel('样本','fontsize',12);
xlabel('优化前输出的误差','fontsize',12); figure(2)
error=d-output_test;
plot(1:(137-90),error);
xlabel('样本','fontsize',12);
ylabel('优化前输出的误差','fontsize',12); %save net net inputs outputs