精华内容
下载资源
问答
  • 【Matlab学习手记】BP神经网络数据预测

    万次阅读 多人点赞 2018-08-11 09:50:55
    目的:利用BP神经网络进行数据预测。 原理 代码 clear; clc; TestSamNum = 20; % 学习样本数量 ForcastSamNum = 2; % 预测样本数量 HiddenUnitNum=8; % 隐含层 InDim = 3; % 输入层 OutDi...

    目的:利用BP神经网络进行数据预测。

    • 原理

    • 代码
    clear; clc;
    TestSamNum = 20;             % 学习样本数量
    ForcastSamNum = 2;           % 预测样本数量
    HiddenUnitNum=8;             % 隐含层
    InDim = 3;                   % 输入层
    OutDim = 2;                  % 输出层
    % 原始数据 
    % 人数(单位:万人)
    sqrs = [20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 ...
           41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63];
    % 机动车数(单位:万辆)
    sqjdcs = [0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6...
            2.7 2.85 2.95 3.1];
    % 公路面积(单位:万平方公里)
    sqglmj = [0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 ... 
             0.56 0.59 0.59 0.67 0.69 0.79];
    % 公路客运量(单位:万人)
    glkyl = [5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 ...
            22598 25107 33442 36836 40548 42927 43462];
    % 公路货运量(单位:万吨)
    glhyl = [1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 ...
            13320 16762 18673 20724 20803 21804];
    p = [sqrs; sqjdcs; sqglmj];  % 输入数据矩阵
    t = [glkyl; glhyl];          % 目标数据矩阵
    [SamIn, minp, maxp, tn, mint, maxt] = premnmx(p, t);   % 原始样本对(输入和输出)初始化
    SamOut = tn;         % 输出样本
    MaxEpochs = 50000;   % 最大训练次数
    lr = 0.05;           % 学习率
    E0 = 1e-3;           % 目标误差
    rng('default');
    W1 = rand(HiddenUnitNum, InDim);      % 初始化输入层与隐含层之间的权值
    B1 = rand(HiddenUnitNum, 1);          % 初始化输入层与隐含层之间的阈值
    W2 = rand(OutDim, HiddenUnitNum);     % 初始化输出层与隐含层之间的权值              
    B2 = rand(OutDim, 1);                 % 初始化输出层与隐含层之间的阈值
    ErrHistory = zeros(MaxEpochs, 1);     
    for i = 1 : MaxEpochs   
        HiddenOut = logsig(W1*SamIn + repmat(B1, 1, TestSamNum));   % 隐含层网络输出
        NetworkOut = W2*HiddenOut + repmat(B2, 1, TestSamNum);      % 输出层网络输出
        Error = SamOut - NetworkOut;       % 实际输出与网络输出之差
        SSE = sumsqr(Error);               % 能量函数(误差平方和)
        ErrHistory(i) = SSE;
        if SSE < E0
            break;
        end
        % 以下六行是BP网络最核心的程序
        % 权值(阈值)依据能量函数负梯度下降原理所作的每一步动态调整量
        Delta2 = Error;
        Delta1 = W2' * Delta2 .* HiddenOut .* (1 - HiddenOut);    
        dW2 = Delta2 * HiddenOut';
        dB2 = Delta2 * ones(TestSamNum, 1); 
        dW1 = Delta1 * SamIn';
        dB1 = Delta1 * ones(TestSamNum, 1);
        % 对输出层与隐含层之间的权值和阈值进行修正
        W2 = W2 + lr*dW2;
        B2 = B2 + lr*dB2;
        % 对输入层与隐含层之间的权值和阈值进行修正
        W1 = W1 + lr*dW1;
        B1 = B1 + lr*dB1;
    end
    HiddenOut = logsig(W1*SamIn + repmat(B1, 1, TestSamNum));   % 隐含层输出最终结果
    NetworkOut = W2*HiddenOut + repmat(B2, 1, TestSamNum);      % 输出层输出最终结果
    a = postmnmx(NetworkOut, mint, maxt);    % 还原网络输出层的结果
    x = 1990 : 2009;      % 时间轴刻度
    newk = a(1, :);       % 网络输出客运量
    newh = a(2, :);       % 网络输出货运量
    subplot(2, 1, 1);
    plot(x, newk, 'r-o', x, glkyl, 'b--+');
    legend('网络输出客运量', '实际客运量');
    xlabel('年份');
    ylabel('客运量/万人');
    subplot(2, 1, 2);
    plot(x, newh, 'r-o', x, glhyl, 'b--+');
    legend('网络输出货运量', '实际货运量');
    xlabel('年份');
    ylabel('货运量/万吨');
    % 利用训练好的网络进行预测
    pnew=[73.39 75.55
          3.9635 4.0975
          0.9880 1.0268];  % 2010年和2011年的相关数据;
    pnewn = tramnmx(pnew, minp, maxp); 
    HiddenOut = logsig(W1*pnewn + repmat(B1, 1, ForcastSamNum));  % 隐含层输出预测结果
    anewn = W2*HiddenOut + repmat(B2, 1, ForcastSamNum);          % 输出层输出预测结果
    anew = postmnmx(anewn, mint, maxt);
    disp('预测值d:');
    disp(anew);
    

     

    展开全文
  • MATLAB实现LSTM多步...时间序列 | 数据预测 | MATLAB】LSTM多步预测 | Elman多步预测 | RNN多步预测 | 机器学习模型 回归预测 | 数据预测 | MATLAB】LSTM多入多出回归预测 | BP多入多出回归预测 | 级联模型预测 ...
    展开全文
  • 数据预测之BP神经网络

    千次阅读 2019-04-16 16:07:50
    BP神经网络用于预测主要有两种利用方法: 根据自身已有的数据预测未来的数据; 根据已知的属性,预测未知的属性。

    BP神经网络用于预测主要有两种利用方法:

    1. 根据自身已有的数据预测未来的数据;
    2. 根据已知的属性,预测未知的属性。
    展开全文
  • Matlab搭建BP神经网络实现数据预测

    千次阅读 2020-05-27 22:26:32
    Matlab搭建bp神经网络实现数据预测写自定义目录标题BP神经网络介绍matlab程序实现运行结果总结 BP神经网络介绍 BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照...

    Matlab搭建bp神经网络实现数据预测

    BP神经网络介绍

    BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络,由于BP神经网络已经面世很久了,具体原理在这里就不做赘述了,网上也有很多资源讲解相关原理的。本篇博客主要针对于如何用matalb 实现BP神经网络的搭建以及进行数据预测。

    matlab程序实现

    %下面的程序共训练了三个BP神经网络,分别用不同的数据进行训练
    %load Third_Q_2;//数据集
    CT = dt';%训练数据,将数据变成6*n 的格式(6维的数据)
    CTL = dtl';%label ,1*n,一维的输出
    [n,m] = size(dt);%n = 总共元素的个数
    CT_1 = CT(1:6,fix(1:0.6*n));%60%,20%,20% for 第一个神经网络,第二个神经网络,第三个神经网络
    CT_2 = CT(1:6,fix(0.6*n+1):fix(0.8*n));
    CT_3 = CT(1:6,fix(0.8*n+1):end);
    CL_1 = CTL(1,1:fix(0.6*n));
    CL_2 = CTL(1,fix(0.6*n+1):fix(0.8*n));
    CL_3 = CTL(1,fix(0.8*n+1):end);
    n1 = 1:fix(0.6*n);% number of 0.6
    for i = 1:5:fix(0.6*n*0.8-5)%筛选百分之80的数据作为训练集
        n1(:,i) = [] ;
    end
    [T1,mint1,maxt1,L1,minl1,maxl1]= premnmx(CT_1,CL_1);%归一化
    CT_1_train = T1(1:6,n1);%训练集	
    CL_1_train = L1(1,n1);%训练集的标签
    net1_1 = newff(minmax(T1),[6,8,4,1],{'tansig','tansig','tansig','purelin'},'trainlm');%新建一个神经网络,输入6维数据,输出一维,共有三个隐藏层,每层分别有6,8,4个神经元,隐藏层的激活函数为‘tansig’,也可以选择‘logsig’,输出层的激活函数为线性激活函数‘purelin’
    %设置训练次数
    net1_1.trainParam.epochs = 500;
    %设置收敛误差
    net1_1.trainParam.goal=0.001;
    %训练网络
    [net1_1,tr]=train(net1_1,CT_1_train,CL_1_train);
    CT_1_test = T1(:,1:5:0.6*n);%测试集
    CL_1_test = L1(:,1:5:0.6*n);%测试集label
    b = sim(net1_1,CT_1_test);%将测试集代入训练好的神经网路,然后得到的结果储存进b
    error1 = b - CL_1_test;%计算测试集预测的数据和本来数据的归一化误差
    c = postmnmx(b,minl1,maxl1);%反归一化
    figure; %作图
    plot(error1);
    title('测试集归一化误差(第一次)');
    %% 第二个神经网络
    n2 = 1:0.2*n;% number of 0.2
    for i = 1:5:fix(0.2*n*0.8-5)
        n2(:,i) = [] ;
    end
    [T2,mint2,maxt2,L2,minl2,maxl2]= premnmx(CT_2,CL_2);
    CT_2_train = T2(1:6,n2);
    CL_2_train = L2(1,n2);
    net2_1 = newff(minmax(T2),[6,8,4,1],{'tansig','tansig','tansig','purelin'},'trainlm');%
    %设置训练次数
    net2_1.trainParam.epochs = 500;
    %设置收敛误差
    net2_1.trainParam.goal=0.00001;
    %训练网络
    %[net2_1,tr]=train(net2_1,CT_2_train,CL_2_train);
    load net2_1
    CT_2_test = T2(:,1:5:fix(0.2*n));
    CL_2_test = L2(:,1:5:fix(0.2*n));
    b2 = sim(net2_1,CT_2_test);
    error2 = b2 - CL_2_test;
    c2 = postmnmx(b2,minl2,maxl2);
    figure(2);
    plot(error2);
    title('测试集归一化误差(第二次)');
    %% %% 第三个神经网络
    n3 = 1:0.2*n;% number of 0.2
    for i = 1:5:fix(0.2*n*0.8-5)
        n3(:,i) = [] ;
    end
    [T3,mint3,maxt3,L3,minl3,maxl3]= premnmx(CT_3,CL_3);
    CT_3_train = T3(1:6,n3);
    CL_3_train = L3(1,n3);
    net3_1 = newff(minmax(T3),[6,8,4,1],{'tansig','tansig','tansig','purelin'},'trainlm');%
    %设置训练次数
    net3_1.trainParam.epochs = 500;
    %设置收敛误差
    net3_1.trainParam.goal=0.0001;
    %训练网络
    %[net3_1,tr]=train(net3_1,CT_3_train,CL_3_train);
     load net3_1
    CT_3_test = T3(:,1:5:fix(0.2*n));
    CL_3_test = L3(:,1:5:fix(0.2*n));
    b3 = sim(net3_1,CT_3_test);
    error3 = b3 - CL_3_test;
    c3 = postmnmx(b3,minl3,maxl3);
    figure(3);
    plot(error3);
    title('测试集归一化误差(第三次)');
    %% 预测数据
    CT_p = dtpredict';%导入所要预测数据的数据集
    CT_p1 = tramnmx(CT_p,mint1,maxt1);%归一化
    c1 = sim(net1_1,CT_p1);%代入训练好的神经网络得到结果
    result1 = postmnmx(c1,minl1,maxl1);%反归一化
    CT_p2 = tramnmx(CT_p,mint2,maxt2);
    c2 = sim(net2_1,CT_p2);
    result2 = postmnmx(c2,minl2,maxl2);
    CT_p3 = tramnmx(CT_p,mint3,maxt3);
    c3 = sim(net3_1,CT_p3);
    result3 = postmnmx(c3,minl3,maxl3);
    r1 = result1';%第一次结果
    r2 = result2';%第二次结果
    r3 = result3';%第三次结果
    

    运行结果

    matlab程序结果
    这里只放第一次的误差图,可以发现由于事先没有对数据集中异常的数据进行处理,导致大部分数据预测的误差很小,但是有少数的点误差很大,这些都是由于异常数据导致的,
    在这里插入图片描述

    总结

    本文简述了如何使用matlab搭建bp神经网络进行数据预测,而文中的数据集大家可以根据自己的需要进行修改,只需改动很少一部分即可。

    展开全文
  • ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练实现二分类预测(基于训练好的模型进行新数据预测) 目录 输出结果 设计思路 核心代码 输出结果 更新中…… 相关文章ML...
  • BP神经网络在数据预测上的应用

    千次阅读 2017-09-21 21:44:38
    用BP神经网络做数据预测有两种形式: 1.根据自身已有的数据预测未来的数据。  比如:根据2000-2012年已知GDP的值预测2013年GDP的值。 求解:用2000,2001,2002的值作为输入,2003作为输出;然后以此类推...
  • keras中首先是训练神经网络模型,在训练好一个不错神经网络模型之后如何对数据进行预测呢? 这里就需要先保存训练好的...接下来的代码展示了如何保存model的结构与训练好的参数,以及如何重构模型用于之后的数据预测
  • 共享单车骑行数据预测 任务说明 1、 任务描述 请在Capital Bikeshare (美国Washington, D.C.的一个共享单车公司)提供的自行车数据上进行回归分析。根据每天的天气信息,预测该天的单车共享骑行量。 原始数据集地址...
  • SPSS 做数据预测方法

    万次阅读 2018-05-21 18:34:17
    在做logistics回归之前,我们要先对你要做预测的变量做个相关分析,找出和你因变量相关的自变量。我这里就不做了,直接用我处理之后的数据。打开我们要分析的数据,单击“分析”,选择“回归”,然后选择“二元...
  • 数据预测建模概述

    千次阅读 2019-03-11 20:08:41
    2,一般拿到的数据为一个矩阵,一行对应一个观测,一列对应一个变量。一般自变量(解释变量)会有多个(x1, x2, …, xp),因变量(被解释变量)只有一个(y)。在预测过程中可以看成是发生在p+1为空间中的事件。 3...
  • import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt import statsmodels.api as sm from statsmodels.graphics.api ...#读取数据,进行处理 dta = [10930,10318,...
  • 机器学习笔记1:基于Logistic回归进行数据预测
  • BP神经网络数据预测

    千次阅读 2019-12-01 09:37:28
    能通过对输入的样本数据的学习训练,获得隐藏在数据内部的规律,并利用学习到的规律来预测未来的数据。 p=[20.55 22.44 25.37 27.13 29.45 30.1 30.96 34.06 36.42 38.09 39.13 39.99 41.93 44.59 47.30 52.89 ...
  • 怎样通过历史数据预测未来?

    万次阅读 2019-01-08 10:51:46
    很多人或许都看过火影忍者,你是否对蛤蟆丸口中的预言之子感到很神奇,这个老蛤蟆预言了很多事情,...那么哪些事情是可以预测的呢,比如预测天气、预测股票,预测世界杯或NBA,预测疾病,事故,公司明年的销量,未来...
  • LSTM算法+数据预测

    万次阅读 多人点赞 2018-11-06 20:43:20
     本例程实现简单的数据预测,只考虑到股票最高值的单一变量,其实还有很多影响因素需要考虑。另外历程中对用的tensorflow中的调用函数及代码功能做了较为详细的注解。  运行的结果:蓝色的线为之前的数据,红色...
  • 航班数据预测与分析

    千次阅读 2019-06-28 21:57:22
    数据集预览(原始数据500w行,使用excel打不开,因此使用notepad++打开): 。 。 。 数据清洗: 数据存储到HDFS: 使用pyspark对数据进行分析: //数据导入 from pyspark import SparkContext from pyspark.sql...
  • 数据预测之BP神经网络具体应用以及matlab代码   1.具体应用实例。根据表2,预测序号15的跳高成绩。 表2 国内男子跳高运动员各项素质指标 序号 跳高成绩() 30行进跑(s) 立定三级跳远() 助跑摸高() ...
  • 用BP神经网络做数据预测有两种形式: 1.根据自身已有的数据预测未来的数据。  比如:根据2000-2012年已知GDP的值预测2013年GDP的值。 求解:用2000,2001,2002的值作为输入,2003作为输出;然后以此类推...
  • 高斯回归进行数据预测

    千次阅读 2018-12-05 20:41:42
    上篇博客:使用高斯函数进行散点拟合预测:https://mp.csdn.net/postedit/84840449 其中的quex缺陷是,在训练数据x的shul数量超过几百后,求解速度回很慢。所以我们使用基于低秩加对角近似的FITC进行求解。模型是...
  • Python基于sklearn实现对酒数据集K-means聚类模型、K临近算法模型和SVM分类模型进行建模、评估与数据预测 一、下载数据集合 数据集网上找一下,此demo只所逻辑参考,数据集标签差异影响不大,对此demo一样实用 我...
  • 本文demo源码、实验数据:传送门引言前面我有分享两篇关于时间序列模型的文章,一篇是 Holt-Winters模型原理分析及代码实现(python),一篇是 LSTM模型分析及对时序数据预测的具体实现(python实现)。holt-winters...
  • 机器学习入门04——糖尿病数据预测

    千次阅读 2019-04-16 13:50:09
    数据说明: Pima Indians Diabetes Data Set(皮马印第安人糖尿病数据集) 根据现有的医疗信息预测5年内皮马印第安人糖尿病发作的概率。 数据链接:https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes ...
  • 目前有某个产品每天的销量数据,想通过这些数据看这个产品的销量趋势 2. 原理3. 代码import numpy from scipy.optimize import leastsq import pylab def zuixiaoerchen(arrayY, picTitle): print(f"arrayY: {...
  • 基于LSTM的时序数据预测

    千次阅读 2019-09-02 21:27:58
    6. 预测文件inference.py import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers ...
  • 点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!精确实现城市中异常事件的预测,在智能城市中智能交通以及城市公共安全的应用中起着重要的作用。为实现该目的,研究工作从以下两个重要层面...
  • 您将学习如何使用Prophet(在R中)解决一个常见问题:预测公司明年的每日订单。... 我们将使用SQL处理每天要预测数据: `select `` date, value from modeanalytics.daily_orders order ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,278
精华内容 29,711
关键字:

数据预测