关于构建一个三层BP神经网络对药品的销售进行预测(程序由matlab编写)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于构建一个三层BP神经网络对药品的销售进行预测(程序由matlab编写)相关的知识,希望对你有一定的参考价值。
下表为某药品的销售情况,现构建一个如下的三层BP神经网络对药品的销售进行预测:输入层有三个结点,隐含层结点数为5,隐含层的激活函数为tansig;输出层结点数为1个,输出层的激活函数为logsig,并利用此网络对药品的销售量进行预测,预测方法采用滚动预测方式,即用前三个月的销售量来预测第四个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、3、4月的销售量为输入预测第5个月的销售量.如此反复直至满足预测精度要求为止。
月份 1 2 3 4 5 6
销量 2056 2395 2600 2298 1634 1600
月份 7 8 9 10 11 12
销量 1873 1478 1900 1500 2046 1556
close all;
clc;
%p = [2056 2395 2600 2298 1634 1600 1837 1478 1900 2395 2600 2298 1634 1600 1873 1478 1900 1500 2600 2298 1634 1600 1873 1478 1900 1500 2046];
t = [1873 1478 1900 1500 2046 1556];
p = [ 2056 2395 2600 2298 1634 1600];
%--归一化输入输出-- 映射到[0,1]--%
pmax = max(p);
pmin = min(p);
P = (p-pmin)./(pmax-pmin);
tmax = max(t);
tmin = min(t);
T = (t-tmin)./(tmax-tmin);
net =newff(P,T,5,'tansig','purelin','traingdx');
%--设置训练参数--%
net.trainParam.show =50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.divideFcn= '';
[net,tr] = train(net,P,T);
A =sim(net,P);
a =A.*(tmax - tmin)+tmin;
x = 7:12;
figure
plot(x,t,'+');
hold on;
plot(x,a,'or');
hold off;
xlabel('month');
ylabel('**')
legend('实际','预测') 参考技术A 你的样本太少了,可以站内信和我交流下 我精通神经网络 参考技术B 神经网络预测要有学习样本和测试样本,你就是一组数据,是不是太少了! 写是可以,估计误差会很大!
BP预测 基于BP神经网络公路运量预测matlab 源码
摘要
在目前的股票投资市场,不少自然人股民的投资主要方式使根据对当天或者一个较长周期对股票数据的预测,来得到下一天的股票数据,从而进行相应的投资。为了满足股民希望能更为理性合理准确的预测股票走向,需要借助机器的帮助。本文主要是利用优化过的遗传算法,利用遗传算法调整BP三层神经网络的权重与阈值,使BP神经网络的训练效果得到提升,从而对股票市场的行情有比较好的预测效果。
遗传算法
遗传算法的过程:
%rood_yunliang.m,公路客运量运量BP网络预测,2007年11月20-21日调试
%问题:用BP网络预测公路客运量
%现有某省1978~2002年的客运量数据,即时间序列有N=25个历史观察值,
%采用长度n=5为一期,n0=2为滚动间隔。即用前5年的数据预测下一年的数据,
%每隔2年开始一期长度为5年的观察数据。要求预测出2003年、2004年的客运量。
%分析:20期数据样本分成两组,每组10个,分别做为训练集(1978年开始)和
%测试集(1979年开始)。设计BP网络有5个输入,1个输出。采用双隐含层,
%隐含层神经元数目采用试差法确定,经试验,第1、2隐含层神经元数目分别为8、5,
%即BP网络设计为5-8-5-1。
%将表1中的输入、输出数据比例化到区间[0.2~0.9]内,并将初始权值随机化,取η=0 6,
%用1978年开始的10个训练集训练网络。经1979年开始的10个测试集测试。
%1978~2002年的客运量数据
%年份 客运量
%1978 12815
%1979 15543
%1980 19326
%1981 22864
%1982 26150
%1983 28468
%1984 30882
%1985 39375
%1986 45759
%1987 49589
%1988 52560
%1989 48726
%1990 51083
%1991 56495
%1992 62767
%1993 83606
%1994 92090
%1995 101370
%1996 107317
%1997 108654
%1998 111847
%1999 112872
%2000 116997
%2001 126007
%2002 128980
close all
clc;
clear;
%按年份排列的原始客运量数据
p0=[12815 15543 19326 22864 26150 28468 30882 39375 45759 49589 52560 48726 ...
51083 56495 62767 83606 92090 101370 107317 108654 111847 112872 ...
116997 126007 128980];
%绘制客运量随年份的变换曲线
year=1978:2002;
plot(year,p0,'b+')
hold on
plot(year,p0,'b-.')
pause
%将原始数据归一化到[0.2 0.9]
%规一化公式:规一化后数据=z1+(z2-z1)*(x-xmin)/(xmax-xmin)
%[z1 z2]为规格化后的数据范围,如本例z1=0.2,z2=0.9;x为待规格化数据;
%xmin、xmax分别为数据序列的最小、最大值。
p1=0.2+(0.9-0.2).*(p0-min(p0))./(max(p0)-min(p0));
%绘制规一化后客运量随年份的变换曲线
%plot(year,p1)
%pause
%按每5年为一期组织样本,作为训练集,p为输入,t为目标。从第1978年客运量开始
j=0;
for i=1:10;
p(:,i)=p1(i+j:i+j+4); %取第i个训练样本,给p
t(:,i)=p1(i+j+5);
j=j+1;
end
p
t
pause
%按每5年为一期组织样本,作为测试集,testp为输入,testt为目标。从1979年客运量开始
j=0;
for i=1:10;
testp(:,i)=p1(i+j+1:i+j+5);
testt(:,i)=p1(i+j+6);
j=j+1;
end
三、运行结果
四、备注
完整代码添加QQ1575304183
以上是关于关于构建一个三层BP神经网络对药品的销售进行预测(程序由matlab编写)的主要内容,如果未能解决你的问题,请参考以下文章
数据预测基于matlab鸟群算法优化BP神经网络数据预测含Matlab源码 1772期
BP神经网络——Python简单实现三层神经网络(Numpy)