当前位置: 首页 > news >正文

python 时间序列预测——SimpleRNN

数据集

COE 参见 python 时间序列预测——简单神经网络

归一化预处理

from sklearn import preprocessing
import pandas as pd

loc= "COE.csv "
temp = pd.read_csv ( loc )
data= temp . drop ( temp . columns [ [ 0 , 1 ] ] , axis=1)

x=data.drop ( data . columns [ [ 0 , 4 ] ] , axis =1)
x=x.apply(np.log )
x=pd.concat ( [ x , data ['Open?' ] ] , axis=1)

scaler_x = preprocessing . MinMaxScaler (feature_range=(0 , 1) )
x = np .array ( x ) . reshape ( ( len ( x ) ,4 ) )
x = scaler_x . fit_transform ( x )

y=data ['COE$']
scaler_y = preprocessing . MinMaxScaler (feature_range=(0 , 1) )
y = np . array ( y ) . reshape ( ( len ( y ) , 1) )
y = np . log ( y )
y = scaler_y . fit_transform ( y )

拆分训练集、测试集

end=len ( x )
learn_end = int ( end * 0.95 )
x_train=x [ 0:learn_end -1 ,]
x_test=x [ learn_end : end-1 ,]
y_train=y [ 1 : learn_end ]
y_test=y [ learn_end+1: end ]
x_train=x_train.reshape ( x_train . shape + ( 1 , ) )
x_test=x_test.reshape ( x_test . shape + ( 1 , ) )

print(" Shape o f x_train is " , x_train . shape)  # (250, 4, 1)
print(" Shape o f x_test is " , y_train . shape)  # (250, 1)

SimpleRNN 训练

import numpy as np
from keras.models import Sequential
from keras.layers.recurrent import SimpleRNN
from keras.layers.core import Dense, Activation
from keras.optimizers import SGD

seed =2018
np.random.seed ( seed )

model = Sequential ()
model.add( SimpleRNN ( units =8, activation ="tanh", input_shape =(4 , 1)))
model.add( Dense ( units =1, activation ='linear'))
sgd = SGD (lr =0.0001 , momentum =0.95 ,nesterov = True )
model.compile ( loss ='mean_squared_error',optimizer = sgd )
model.fit( x_train , y_train , batch_size =10 ,epochs =100)

score_train = model.evaluate( x_train ,y_train ,batch_size =10)
score_test = model.evaluate(x_test ,y_test ,batch_size =10)
print("in train MSE = ", round( score_train,6))
print("in test MSE = ", round( score_test ,6))

pred0 = model . predict ( x_test )
pred = np.exp(scaler_y.inverse_transform(np. array( pred0 ).reshape((len( pred0 ), 1))))
target = np.exp(scaler_y.inverse_transform(np. array(y_test).reshape((len( y_test ), 1))))

plt.plot(target)
plt.plot(pred)
plt.plot(target*1.05,'--g',target*0.95,'--g')
plt.legend(['target','prediction','comfort interval'])

在这里插入图片描述

相关文章:

  • ADSL拨号断线
  • python 时间序列预测——Jordan循环神经网络
  • 强大的数据报表中心
  • python 时间序列预测——Elman循环神经网络
  • IFormatProvider 接口
  • python 时间序列预测——NARX循环神经网络
  • 好可爱啊
  • python 时间序列预测——LSTM, GRU
  • python 时间序列预测——多序列预测
  • 为什么美女喜欢软件开发的gg做老公
  • LINQ体验系列文章导航
  • python 绘制条形图
  • 一个很好的svn托管站点
  • Gephi:can’t find java 1.8 or higher
  • 尿飞顿作灵思涌
  • Angular Elements 及其运作原理
  • cookie和session
  • Java的Interrupt与线程中断
  • JS函数式编程 数组部分风格 ES6版
  • Js基础知识(一) - 变量
  • leetcode386. Lexicographical Numbers
  • node 版本过低
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Spring Boot快速入门(一):Hello Spring Boot
  • VuePress 静态网站生成
  • 初识MongoDB分片
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 分布式熔断降级平台aegis
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 那些年我们用过的显示性能指标
  • 王永庆:技术创新改变教育未来
  • 做一名精致的JavaScripter 01:JavaScript简介
  • # 数论-逆元
  • # 透过事物看本质的能力怎么培养?
  • $L^p$ 调和函数恒为零
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十)T检验-第一部分
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)Linq学习笔记
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET建议使用的大小写命名原则
  • .NET与 java通用的3DES加密解密方法
  • .so文件(linux系统)
  • .考试倒计时43天!来提分啦!
  • /etc/fstab 只读无法修改的解决办法
  • /run/containerd/containerd.sock connect: connection refused
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @SuppressWarnings注解
  • @Transactional类内部访问失效原因详解