BP神经网络应用

每层神经元数目(输入层,隐含层,输出层)

转移函数σ:(每一层的神经元基本上都会用同一个转移函数)

训练方法:traingdx(梯度下降)、trainlm(Levenburg-Marquardt,一种结合了梯度下降法和牛顿法的方法)

其他可选部分:误差函数(默认MSE),训练过程作图,等等。

%生成训练集、测试集
speed=xlsread('C:\Users\Hasee\Desktop\rs\BPoccupy.xlsx');
follow=xlsread('C:\Users\Hasee\Desktop\rs\BPfollow.xlsx');
P_train=speed((2:5000),2:end)';
T_train=follow((2:5000),2:end)';
P_test=speed((5001:6624),2:end)';
T_test=follow((5001:6624),2:end)';
N=size(P_test,2);

%归一化
[p_train,ps_input]=mapminmax(P_train,0,1);
p_test=mapminmax('apply',P_test,ps_input);
[t_train,ps_output]=mapminmax(T_train,0,1);

%创建网络
net=newff(p_train,t_train,5,{'tansig','purelin'},'trainlm');

%训练参数
net.trainParam.epochs=1000;
net.trainParam.goal=1e-3;
net.trainParam.lr=0.01;

%训练网络
net=train(net,p_train,t_train);

%仿真测试
t_sim=sim(net,p_test);

%数据反归一化
T_sim=mapminmax('reverse',t_sim,ps_output);

%相对误差
error=abs(T_sim-T_test)./T_test;
%决定系数R2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));

%结果对比
result=[T_test',T_sim',error'];

%绘图
figure;
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('流量')
string = {'测试集流量预测结果对比';['R^2=' num2str(R2)]};
title(string)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值