资源简介
研究生数学建模资料,基于BP神经网络的股票数据预测模型~
代码片段和文件信息
clear all
clc
clf
%采用三层BP网络结构
%输入层神经元数为5,隐含层神经元数为3,输出层神经元数为1
%最大迭代次数
maxcishu=5000;
%e为计算输出和样本实际输出差
%在内存中开辟maxcishu个存储空间
e=zeros(maxcishu1);
% 输入数据维度5,输入节点数5
% maxp当日最高价序列
% minp当日最低价序列
% sp当日开盘价
% ep当日收盘价
% tnum当日成交量
% 调用数据
%shuju=xlsread(‘dm.xlsx‘ ‘B1:K151‘);
shuju=importdata(‘BP_ZXF.xlsx‘);
sp=shuju.data(:1)‘;
maxp=shuju.data(:2)‘;
minp=shuju.data(:3)‘;
tnum=shuju.data(:10)‘;
ep=shuju.data(:4)‘;
%将数据集按照2:1分为训练样本集,和测试样本集
jishu=length(ep);
jishu=ceil(jishu/3*2) ;
%测试样本集是2/3处到最后一个
spt=sp(jishu+1:end);
maxpt=maxp(jishu+1:end);
minpt=minp(jishu+1:end);
tnumt=tnum(jishu+1:end);
ept=ep(jishu+1:end);
%训练样本集
sp=sp(1:jishu);
maxp=maxp(1:jishu);
minp=minp(1:jishu);
tnum=tnum(1:jishu);
ep=ep(1:jishu);
%记录下每组的最大值最小值,为训练样本集的归一化准备
maxp_max=max(maxp);
maxp_min=min(maxp);
minp_max=max(minp);
minp_min=min(minp);
ep_max=max(ep);
ep_min=min(ep);
sp_max=max(sp);
sp_min=min(sp);
tnum_max=max(tnum);
tnum_min=min(tnum);
% 目标数据为次日的收盘价,相当于把当日收盘价时间序列向前挪动一个单位
goalp=ep(2:jishu);
%数据归一化将所有数据归一化到(0 1)
guiyi=@(A)((A-min(A))/(max(A)-min(A)));
maxp=guiyi(maxp);
minp=guiyi(minp);
sp=guiyi(sp);
ep=guiyi(ep);
tnum=guiyi(tnum);
% 后面的目标数据goalp个数是ep向前移动一位得到,所以最后一组的目标数据缺失
% 所以,要把除了目标数据goalp以外的所有数据序列删除最后一个
maxp=maxp(1:jishu-1);
minp=minp(1:jishu-1);
sp=sp(1:jishu-1);
ep=ep(1:jishu-1);
tnum=tnum(1:jishu-1);
%需要循环学习次数loopn,即训练样本的个数
loopn=length(maxp);
%为了方便表示将5个行向量放到一个5*loopn的矩阵中simp中每一列是一个样本向量
simp=[maxp;minp;sp;ep;tnum];
%隐含层节点n
%根据相关资料,隐含层节点数比输入节点数少,一般取1/2输入节点数
bn=3;
%隐含层激活函数为S型函数
jihuo=@(x)(1/(1+exp(-x)));
%bx用来存放隐含层每个节点的输出
%bxe用来保存bx经过S函数处理的值,即输出层的输入
bx=zeros(bn1);
bxe=zeros(bn1);
%权值学习率u
u=0.02;
%W1(mn)表示隐含层第m个神经元节点的第n个输入数值的权重,
%即,每一行对应一个节点
%所以输入层到隐含层的权值W1构成一个bn*5的矩阵,初值随机生成
W1=rand(bn5);
%W2(m)表示输出节点第m个输入的初始权值,采用随机生成
W2=rand(1bn);
%loopn个训练样本,对应loopn个输出
out=zeros(loopn1);
for k=1:1:maxcishu
%训练开始i表示为本次输入的是第i个样本向量
for i=1:1:loopn
%求中层每个节点bx(n)的输出,系数对应的是W1的第n行
for j=1:1:bn
bx(j)=W1(j:)*simp(:i);
bxe(j)=jihuo(bx(j));
end
%求输出
out(i)=W2*bxe;
%误差反向传播过程
%计算输出节点的输入权值修正量结果放在行向量AW2中
%输出神经元激活函数 f(x)=x
%为了书写方便,将deta用A代替
AW2=zeros(1bn);
AW2=u*(out(i)-goalp(i))*bxe‘;
%计算隐含层节点的输入权值修正量结果放在行向量AW1中需要对隐含层节点逐个处理
AW1=zeros(bn5);
for j=1:1:bn
AW1(j:)=u* (out(i)-goalp(i))*W2(j)*bxe(j)*(1-bxe(j))*simp(:i)‘;
end
W1=W1-AW1;
W2=W2-AW2;
end
%计算样本偏差
e(k)=sum((out-goalp‘).^2)/2/loopn;
%误差设定
if e(k)<=0.01
disp(‘迭代次数‘)
disp(k)
disp(‘训练样本集误差‘)
disp(e(k))
break
end
end
%显示训练好的权值
W1
W2
%绘制误差收敛曲线,直观展示收敛过程
figure(1)
hold on
e=e(1:k);
plot(e)
title(‘训练样本集误差曲线‘)
% 计算输出和实际输出对比图
figure(2)
plot(out‘rp‘)
hold on
plot(goalp‘bo‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4614 2015-11-24 19:19 基于BP神经网络的股票数据预测模型\BP_ZXF.m
文件 24599 2015-11-11 23:24 基于BP神经网络的股票数据预测模型\BP_ZXF.xlsx
文件 103861 2016-06-29 22:37 基于BP神经网络的股票数据预测模型\基于BP网络的股票数据预测模型.docx
目录 0 2016-08-30 10:47 基于BP神经网络的股票数据预测模型
----------- --------- ---------- ----- ----
133074 4
- 上一篇:一种识别交通标志的多层次化神经网络结构
- 下一篇:RS232完整Verilog代码
相关资源
- 2012年数学建模全国一等奖论文
- 中国人口增长预测_灰色模型——全国
- 2020全国大学生数学建模竞赛评阅要点
- 历届数学建模大赛优秀论文含国赛、
- 数学建模-脑部血流文件
- 2009 数学建模C题参考答案
- 2007年全国数模大赛B题代码略改动
- 2009数学建模B题答案解析
- 竞赛评分公平性的模型
- 08年全国大学生数学建模竞赛A题数码
- 2018年MathorCup数学建模挑战赛D题
- 旅游路线设计 数学建模
- 2020美国大学生数学建模竞赛中文版
- 美国大学生数学建模论文Latex模板
- 数模软件tora
- 数学建模大赛论文汇总——神经网络
- 数学建模国赛Latex排版
- 2019年深圳杯数学建模竞赛题目.zip
- 2018数学建模国赛A题最终论文
- 2018数学建模国赛A题第一问
- 吉林省第九届题大学生数学建模竞赛
- 数学建模竞赛题目 木板最优切割方案
- 2019年美赛D题论文
- 数学建模深圳市人才吸引力评价
- 共享单车数学建模
- 2017年数学建模国赛AB题参考答案
- 数学建模2019美赛D题 逃离卢浮宫 代码
- 2018全国大学生数学建模比赛Latex模板
- 报童问题 数学建模 代码
- 2018美赛A题O奖论文 队伍号77845
评论
共有 条评论