文章目录

  • BP神经网络
    • 数据格式
    • 代码部分

auto arima代码部分

  • rolling_size = 2000,test_size = 1000

    这已经算是经过尝试后的局部最优,rmse=0.3884

BP神经网络

BP神经网络理论及代码部分

数据格式

代码部分

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: liujie
@software: PyCharm
@file: BP1.py
@time: 2020/11/8 21:57
"""
import warnings
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
from sklearn.preprocessing import StandardScaler
from tensorflow.keras import layers,optimizers
from sklearn.metrics import mean_squared_error as MSE# 读取数据
def read_data(datapath):# read datadata1 = pd.read_csv(datapath,index_col=0)# 填充或者删去data1.fillna(method='pad',inplace=True)      # 填充# data.dropna(inplace = True)                 # 删去return data1# 分割数据
def splitdata(data,Sequence_length,horizon):all_data = []for dta in range(len(data) - sequence_length -horizon + 1):all_data.append(data[dta : dta + sequence_length])all_data = np.array(all_data)ydata = data[(horizon + sequence_length -1) :]ydata = list(ydata)# 加入y变量all_data = pd.DataFrame(all_data)all_data['y'] = ydataall_data = np.array(all_data)# split data-训练数据、验证数据、测试数据比例0.6/0.2/0.2# round函数-进行四舍五入转化的row_1 =round(0.4 * int(all_data.shape[0]))row_2 = round(0.2 * int(all_data.shape[0]))x_train_initial = all_data[:-int(row_1),:-1]y_train_initial = all_data[:-int(row_1),-1]x_val_initial = all_data[-int(row_1):-int(row_2),:-1]y_val_initial = all_data[-int(row_1):-int(row_2),-1]x_test_initial = all_data[-int(row_2):,:-1]y_test_initial = all_data[-int(row_2):,-1]return x_train_initial,y_train_initial,x_val_initial,y_val_initial,x_test_initial,y_test_initial# 标准化处理
def standard(x_train_initial,y_train_initial,x_val_initial,y_val_initial,x_test_initial,y_test_initial):x_scaler = StandardScaler()y_scale = StandardScaler()# 分别对x与y进行标准化x_train = x_scaler.fit_transform(x_train_initial)x_val = x_scaler.transform(x_val_initial)x_test = x_scaler.transform(x_test_initial)y_train = y_scale.fit_transform(y_train_initial.reshape(-1,1))y_val = y_scale.transform(y_val_initial.reshape(-1,1))y_test = y_scale.transform(y_test_initial.reshape(-1,1))# 生成正式的数据格式amount_of_features = 1x_train = np.reshape(x_train,(x_train.shape[0],x_train.shape[1],amount_of_features))x_val = np.reshape(x_val,(x_val.shape[0],x_val.shape[1],amount_of_features))x_test = np.reshape(x_test,(x_test.shape[0],x_test.shape[1],amount_of_features))return x_train,y_train,x_val,y_val,x_test,y_test# keras 版本模型
def get_uncompiled_model():inputs = tf.keras.Input(shape=(10,),name = 'digits')             x = layers.Dense(24,activation='relu',name='dense_1')(inputs)   x = layers.Dense(8,activation='relu',name='dense_2')(x)                                                x = layers.Dense(1,name='dense_3')(x)model = tf.keras.Model(inputs=inputs,outputs=x)return model# 转换到标准化前的格式
def inverse_data(y_train_initial,y_pre,y_test):y_scale = StandardScaler()y_scale = y_scale.fit(y_train_initial.reshape(-1,1))y_pre = y_scale.inverse_transform(y_pre)y_test = y_scale.inverse_transform(y_test)return y_pre,y_testif __name__ == '__main__':# 读取数据-dataframeindex = 'data'path = '../data/Data.csv'sequence_length = 10           # 序列长度horizon = 1                    # 移动的步长data = read_data(path)[index]# 分割数据x_train_initial,y_train_initial,x_val_initial,y_val_initial,x_test_initial,y_test_initial = splitdata(data,sequence_length,horizon=horizon)# 标准化x_train,y_train,x_val,y_val,x_test,y_test = standard(x_train_initial,y_train_initial,x_val_initial,y_val_initial,x_test_initial,y_test_initial)# print('size = ',y_test.size)# 训练模型model = get_uncompiled_model()# model.compile()模型配置损失和度量、优化器model.compile(optimizer=optimizers.Adam(learning_rate=1e-3),loss='mean_squared_error',)# model.fit()对模型进行训练model.fit(x_train, y_train, batch_size=64, epochs=200,validation_data=(x_val,y_val))# model.predict()对模型进行预测y_pre = model.predict(x_test)print('y_pre = ',y_pre)# model.summary()# 转换到原来的数据格式y_pre_rel,y_test_rel = inverse_data(y_train_initial,y_pre,y_test)y_pre_rel = np.array(y_pre_rel).reshape(-1,1)y_test_rel = np.array(y_test_rel).reshape(-1,1)# rmsermse = np.sqrt(MSE(y_pre_rel,y_test_rel))# 画图# pd.Series()fig = plt.figure()plt.plot(y_pre_rel,'y-',label='predictions')plt.plot(y_test_rel,'r--',label='test')plt.legend(loc = 'best')plt.title('RMSE : %.4f'%(rmse))plt.show()


使用很简单的BP神经网络,效果就已经超过传统的ARIMA

下面一章节我会尝试调试BP神经网络层数及每层神经元的个数来改善效果,
敬请期待!!!

时间序列-BP神经网络及与auo arima的比较相关推荐

  1. 生猪价格matlab,基于时间序列的BP神经网络猪肉价格预测

    科技创新 2m6钎第20期I科技创新与应用 基于时间序列的BP神经网络猪肉价格预测 张津张瑞斌 (成都理工大学管理科学学院,四川成都610059) 摘要:猪肉价格是不稳定的,起伏变化的,猪肉价格的预测 ...

  2. bp神经网络时间序列预测,bp神经网络有几个阶段

    什么是BP神经网络? . BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成:正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差 ...

  3. matlab神经网络预测太阳黑子,基于小波消噪与BP神经网络的太阳黑子时间序列预测...

    摘要: 现实世界中的时间序列通常包含多种不确定性因素,所以很难用传统的线性模型建模.预测.且含噪声时间序列的非线性预测是自然界和社会科学中普遍存在的问题,解决这一问题不仅具有理论意义而且有广泛的应用前 ...

  4. bp神经网络时间序列预测,bp神经网络数据预处理

    怎么用已经训练好的BP神经网络进行预测下一个值? 谷歌人工智能写作项目:神经网络伪原创 bp神经网络如何用于预测 如何人工神经网络来预测下一个数值 newff函数建立BP神经网络,历史数据作为样本,例 ...

  5. m分别使用BP神经网络和GRNN网络进行时间序列预测matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强 ...

  6. bp神经网络预测未来五年数据_基于小波神经网络的数据中心KPI预测

    随着软件和微服务的发展,智能运维越来越受到人们的重视.在大量的运维数据里,最不可忽视的就是各种关键性能指标数据(Key Performance Indicators,KPI),它们在数学上都可以被表达 ...

  7. 【13】 数学建模 | 预测模型 | 灰色预测、BP神经网络预测 | 预测题型的思路 | 内附代码(清风课程,有版权问题,私聊删除)

    一.灰色预测使用的场景 数据是以年份度量的非负数据(如果是月份或者季度数据一定要用我们上一讲学过的时间序列模型): 数据能经过准指数规律的检验(除了前两期外,后面至少90%的期数的光滑比要低于0.5) ...

  8. 运用自回归滑动平均模型、灰色预测模型、BP神经网络三种模型分别预测全球平均气温,并进行预测精度对比(附代码、数据)

    大家好,我是带我去滑雪,每天教你一个小技巧!全球变暖是近十年来,人们关注度最高的话题.2022年夏天,蔓延全球40℃以上的极端天气不断刷新人们对于高温的认知,人们再也不会像从前那样认为全球变暖离我们遥 ...

  9. 【预测模型】基于BP神经网络、LSTM、GRNN实现风电功率预测附matlab代码

    1 简介 风电功率预测结果的准确性,不仅关系到风力发电厂的综合运行效率,也与区域运行成本具备直接联系,基于BP神经网络.LSTM.GRNN实现风电功率预测.​经过实例分析,证明设计的方法对风电功率的预 ...

  10. MATLAB中用BP神经网络预测人体脂肪百分比数据

    原文链接:http://tecdat.cn/?p=22739 这个例子说明了一个函数拟合的神经网络如何根据测量结果来估计脂肪百分比(BFP) (点击文末"阅读原文"获取完整代码数据 ...

最新文章

  1. 谷歌AI专家爆料:90%的人都不知道,写不出好代码,是输在了这点上!
  2. Windows CE 6.0正式发布 源代码100%开放
  3. 开发日记-20190825 关键词 管道和FIFO
  4. mount 返回状态_状态管理模式 — Vuex如何使用?
  5. C++学习笔记-继承
  6. emWin智能家居主界面设计,含uCOS-III和FreeRTOS两个版本
  7. CSS鼠标滑过改变样式颜色
  8. 只怪自己当时年纪太小,一心只看那只泼猴了
  9. (百万数据量级别)java下的mysql数据库插入越插越慢的问题解决
  10. sqlite 表与表之间的关系_第33章 Django多表关系之一对一
  11. linux pm2功能说明,PM2介绍及简易使用手册
  12. android开发笔记之 国家/地区语言速查表
  13. web测试中如何简单定位bug
  14. 二维傅立叶变换和二维傅立叶反变换
  15. 反向题在测试问卷信效度_问卷前测除了信效度,你还需知道...
  16. Livezilla安装配置, APE(Ajax Push Engine)安装配置
  17. Android指纹验证(BiometricPrompt)
  18. linux自定义oem分区,怎么样把oem分区里的数据移到虚拟机的硬盘里?
  19. 光学系统中的几何像差
  20. 深度|人脸图像的技术原理及在电商业务中的应用

热门文章

  1. 顶尖,何为顶尖?你知道吗?我知道..
  2. c++冒泡排序的类模板的实现
  3. C++数据类型之结构体的练习(用到结构体的赋值,利用结构体元素排序以及查找)
  4. 20190818 On Java8 第八章 复用
  5. 嵌入Windows User Control到ASP.NET web form
  6. # heapsort
  7. java根据所给的根目录获取底下所有文件夹结构
  8. EF Core 小工具
  9. vue项目 拷到别的电脑应该怎吗再次重新运行
  10. Java 继承 小练习