• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

BP神经网络在matlab中的应用 - smile442

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

BP神经网络在matlab中的应用

    现给出一药品商店一年当中12个月的药品销售量(单位:箱)如下:2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556,训练一个BP网络,用当前的所有数据预测下一个月的药品销售量。

分析:

    用前三个月的销售量预测下一个月的销售量,即用1-3月的销售量预测第4个月的销售量,用2-4个月的销售量预测第5个月的销售量,如此循环下去,直到用9-11月预测12月份的销售量。这样训练BP神经网络后,就可以用10-12月的数据预测来年一月的销售量。

matlab实现:(在matlab中新建一个Script,写入如下代码)

P =[2056 2395 2600;2395 2600 2298;2600 2298 1634;2298 1634 1600;

1634 1600 1873;1600 1873 1478;1873 1478 1900;1478 1900 1500;

1900 1500 2046;]; %输入样本矩阵

T = [2298 1634 1600 1873 1478 1900 1500 2046 1556]; %期望输出

%归一化处理

pmax = max(P); %找出样本中每一列的最大值

pmax1 = max(pmax); %找出样本的最大值

pmin = min(P);

pmin1 = min(pmin);

for i=1:9

P1(i,:)=(P(i,:)-pmin1)/(pmax1-pmin1); %将样本每一行都归一化

T1(i)=(T(i)-pmin1)/(pmax1-pmin1);

End

%创建BP神经网络

net = newff(P1\',T1,[3 7],{\'tansig\' \'logsig\'},\'traingd\'); %注意newff()的参数

%设置最大迭代次数、误差精度、学习速率,依次训练每一个样本

for i = 1:9

net.trainParam.epochs = 15000;

net.trainParam.goal=0.01;

net.trainParam.lr = 0.1

net = train(net,P1(i,:)\',T1(i));

end

y=sim(net,[1500 2046 1556]\'); %训练结束后,根据样本进行预测

y1=y*(pmax1-pmin1)+pmin1; %预测结果归一化

%仿真结束

结果:

对比学习速率为0.01和0.1的仿真结果:

    由于每次初始化网络的随机值不同,因此仿真可能得到不同的结果。可以看出学习速率越小,训练时间越长,迭代次数越多,

注意:

newff() 函数

(1) 功能:建立BP网络

(2) 参数:4个参数依次是:

第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。

第二个参数设定每层神经元个数。

第三个参数包含每层用到的传递函数名称。

最后一个参数是用到的训练函数的名称。

如:net=newff([-1 2; 0 5],[3,1],{\'tansig\',\'purelin\'},\'traingd\');

    这个命令创建了一个BP网络,它的输入是两个元素的向量,第一个元素的范围是-1到2,第二个元素的范围是0到5;网络第一层有3个神经元,第二层有1个神经元;第一层的传递函数是tan-sigmoid,输出层的传递函数是线性的;输入向量的训练函数是traingd,标准梯度下降算法。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DELPHI 汉化DevExpress发布时间:2022-07-18
下一篇:
Delphi/C++ Builder 开发 Android 程序启动画面简单完美解决方案发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap