美文网首页大学生活程序员神经网络算法
基于BP神经网络的股票预测模型

基于BP神经网络的股票预测模型

作者: 缠禅可禅 | 来源:发表于2017-01-12 21:23 被阅读0次

    对于很多人人为,股票预测是一个很难的问题。其实不然,运用今天这种数学工具你可以大概预测出股票的短期走势。因为长期走势受很多因素的影响。

    运用MATLAB神经网络工具箱,快速建立BP网络结构。那么你会问什么是神经网络,那么我下面就给大家简单的介绍一下:

    人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。

    人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。

    所以网络学习的准则应该是:如果网络作出错误的的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。

    如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速、准确的判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。

    如图所示拓扑结构的单隐层前馈网络,一般称为三层前馈网或三层感知器,即:输入层、中间层(也称隐层)和输出层。它的特点是:各层神经元仅与相邻层神经元之间相互全连接,同层内神经元之间无连接,各层神经元之间无反馈连接,构成具有层次结构的前馈型神经网络系统。单计算层前馈神经网络只能求解线性可分问题,能够求解非线性问题的网络必须是具有隐层的多层神经网络。

    BP神经网络结构

    ​​言归正传,那么接下来就看看我对运用神经网络对股票的预测模型吧。以前五日的交易数据,作为输入,预测明天的股票价格。​​

    mtlab代码:

    %bp.m​

    %处理数据

    clear

    close all

    echo on  %窗口响应执行过程

    clc

    pause

    a=xlsread('learn.xls',1,'A2:A301');%样本时间序号

    a1=xlsread('learn.xls',1,'A7:A301');%预测时间序号

    b=xlsread('learn.xls',1,'C2:C301');%读取指数

    for i=1:1:295

    y(i)=b(i+5);%理想输出

    end

    for i=1:1:295

    for j=1:1:5

    x(j,i)=b(i+j-1);%输入

    end

    end

    a

    x    %以前五日预测明天的大盘指数的输入矩阵

    y    %理想的输出

    %pause

    [xn,minx,maxx,yn,miny,maxy]=premnmx(x,y) %数据归一化处理

    xn

    yn

    %pause

    tic;

    %建立神经网络

    net=newff(minmax(xn),[11,1],{'tansig','purelin'},'trainlm');

    net.trainparam.show=50;    %显示迭代过程

    net.trainparam.lr=0.5;    %学习率

    net.trainparam.epochs=1000; %最大训练次数

    net.trainparam.goal=1e-3;  %训练要求精度

    net.trainparam.mc=0;     %动量因子

    [net,tr]=train(net ,xn,yn); %训练bp网络

    t = toc;

    t

    pause

    inputWeights=net.iw{1,1} %输入层权值

    inputbias=net.b{1}      %输入层阈值

    layerWeights=net.lw{2,1} %输出层权值

    layerbias=net.b{2}       %输出层阈值

    %对网络仿真预测

    On = sim (net ,xn);

    E=On-yn %计算误差

    M=sse(E)

    N=mse(E)

    %pause

    a2=postmnmx(On,miny,maxy)

    plot(a1,xn)

    title('归一化处理后的样本','FontSize',12);

    xlabel('统计时间2014.9.6-2015.11.10','FontSize',10);

    ylabel('归一化后的上证指数','FontSize',10);

    figure;

    plot(a1,yn)

    plot(a,b,'*');

    title('上证指数预测收盘价格','FontSize',12);

    xlabel('统计时间2014.9.1-2015.11.10','FontSize',10);

    ylabel('上证指数','FontSize',10);

    hold on

    plot(a1,a2,'r+');

    legend('实际值','r预测值');

    echo off

    pause

    clc

    训练神经网络、预测

    BP网络验证图像

    相关文章

      网友评论

        本文标题:基于BP神经网络的股票预测模型

        本文链接:https://www.haomeiwen.com/subject/zejjbttx.html