关于构建一个三层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

clear all;
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编写)的主要内容,如果未能解决你的问题,请参考以下文章

BP预测 基于BP神经网络公路运量预测matlab 源码

数据预测基于matlab鸟群算法优化BP神经网络数据预测含Matlab源码 1772期

BP神经网络——Python简单实现三层神经网络(Numpy)

关于BP神经网络出现的问题

这样的三层BP神经网络怎么建立: 4个输入节点,3个输出节点,隐含层节点数为7,传递函数均采用Sigmoid函数!

优化预测基于matlab鲸鱼优化算法优化BP回归预测含Matlab源码 W002期