神经网络预测

来源:互联网 发布:facebook mac客户端 编辑:程序博客网 时间:2024/04/26 01:14

clc ; clear ;


INPUT = xlsread('input.xls');
input = INPUT;
output = xlsread('output.xls');
k = rand(1,2000); %1x2000的矩阵
[m,n] = sort(k); % n是下标矩阵 , 用来随机选取数据


%训练数据
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); %inputn 归一化之后的数据
[outputn , outputps] = mapminmax(output_train);
inputn_test = mapminmax('apply',input_test , inputps); %与训练数据同样的映射 inputps




%BP神经网络构建
net = newff(inputn , outputn , 5);


%网络参数配置 (迭代次数 , 学习率 , 目标)
net.trainParam.epochs = 100 ;
net.trainParam.lr = 0.1;
net.trainParam.goal = 0.00004 ;


%训练
net = train(net ,inputn , outputn);


% 训练结果权值, 阈值
InputWeights = net.iw{1,1} ; %输入层到隐层的权值
LayerWeights = net.lw{2,1}; % 隐层到输出层的权值


bias1 = net.b{1};%隐层阈值
bias2 = net.b{2};%输出层阈值


%预测
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)
figure(2);
ms = output_test - BPoutput ;
plot(ms,'- *');
title ('预测误差','fontsize',12);
ylabel ('误差','fontsize',12);
xlabel('样本','fontsize',12)

0 0
原创粉丝点击