
示例程序见附件,其为一个简单的时间序列预测算例。其实所有的预测问题,本质都是一样的,通过对样本的学习,将网络训练成一个能反映时间序列内部非线性规律的系统,最终应用于预测。
BP(Back Propagation)神经网络是86年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
load data3_1txt;
[m,n]=size( data3_1);
tsx = data3_1(1:m-1,1);
tsx=tsx';
ts = data3_1(2:m,1);
ts=ts';
[TSX,TSXps]=mapminmax(tsx,1,2);
[TS,TSps]=mapminmax(ts,1,2);
TSX=TSX';
figure;
plot(ts,'LineWidth',2);
title('到杭旅游总人数(19990101-20091231)','FontSize',12);
xlabel('统计年份(19901219-20090819)','FontSize',12);
ylabel('归一化后的总游客数/万人','FontSize',12);
grid on;
% 生成BP网络、利用minmax函数求输入样本范围
net_1=newff(minmax(TS),[10,1],{'tansig','purelin'},'traincgf')
% 设置训练参数
net_1trainParamshow = 50; %显示训练迭代过程(NaN表示不显示,缺省25)
net_1trainParamlr = 0025; %学习率(缺省001)
net_1trainParammc = 09; %动量因子(缺省09)
net_1trainParamepochs = 10000; %最大训练次数
net_1trainParamgoal = 0001; %训练要求精度
inputWeights=net_1IW{1,1} %输入层权值
inputbias=net_1b{1} %输入层阈值
layerWeights=net_1LW{2,1} %输出层权值
layerbias=net_1b{2} %输出层阈值
TS',TSX
% 网络训练
[net_1,tr]=train(net_1,TS,TSX);
由于睡眠的周期相对来说是没有规律可循的,所以用神经网络对一个晚上的睡眠分期进行训练,然后预测另一个晚上的睡眠分期。你可以考虑用anfis自适应神经网络来预测。
现举例说明,如何使用anfis自适应神经网络来预测。
x = (0:01:10)';
y = sin(2x)/exp(x/5);
epoch_n = 20;
in_fis = genfis1([x y],5,'gbellmf');
out_fis = anfis([x y],in_fis,epoch_n);
plot(x,y,x,evalfis(x,out_fis));
legend('Training Data','ANFIS Output');
xlabel('x'),ylabel('y');
以上就是关于用MATLAB的BP神经网络时间序列预测编程全部的内容,包括:用MATLAB的BP神经网络时间序列预测编程、求用matlab通过BP神经网络做预测的源程序、用神经网络预测睡眠分期的matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)