摘要
在目前的股票投资市场,不少自然人股民的投资主要方式使根据对当天或者一个较长周期对股票数据的预测,来得到下一天的股票数据,从而进行相应的投资。为了满足股民希望能更为理性合理准确的预测股票走向,需要借助机器的帮助。本文主要是利用优化过的遗传算法,利用遗传算法调整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
转载:https://blog.csdn.net/weixin_50197058/article/details/116433277
查看评论