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

python 时间序列预测——多序列预测

数据集

股票指数,STOCKINDEX

import numpy as np
import pandas as pd
import urllib.request as request
import zipfile

# download
url ="http://www.economicswebinstitute.org/data/stockindexes.zip"
loc ="./stockindexes.zip"
request . urlretrieve (url , loc)

# unzip
dest_location ="./"
unzip = zipfile.ZipFile(loc ,'r')
unzip.extractall(dest_location )
unzip.close ()

# load one xls
loc = "stockindexes.xls"
Excel_file = pd. ExcelFile (loc)
print (Excel_file . sheet_names)
'''
['Description', 'Dow Jones Industrial', 'S&P500', 'NIKKEI 300', 'Dax30', 'CAC40', 'Swiss Market-Price Index', 'Mib30', 'IBEX 35I', 'Bel20', 'FTSE100']
'''

预测对象

主要关注两个指数:FTSE100【富时100指数】,Dow Jones Industrial【道琼斯工业指数】

ftse_data = Excel_file .parse ('FTSE100')
dj_data = Excel_file .parse ('Dow Jones Industrial')

ftse100 = ftse_data . iloc [4:1357 ,1]
dj= dj_data . iloc [4:1357 ,1]

yt = pd. concat ([ ftse100 ,dj], axis =1)
yt = yt. reset_index ( drop = True )
yt. columns = ['ftse100', 'dj']
yt = yt. pct_change (1)
win =30
vol_t = yt. rolling ( window =win , center = True ).std ()
print(vol_t.shape)

plt.figure(figsize=(9,3))
plt.plot(vol_t)

在这里插入图片描述

预处理

引入时滞

x1 = np.log((vol_t.shift(1)/vol_t.shift(2))*vol_t.shift(1))
x2 = np.log((vol_t.shift(1)/vol_t.shift(3))*vol_t.shift(1))
x3 = np.log((vol_t.shift(1)/vol_t.shift(4))*vol_t.shift(1))
x4 = np.log((vol_t.shift(1)/vol_t.shift(5))*vol_t.shift(1))
x5 = np.log((vol_t.shift(1)/vol_t.shift(6))*vol_t.shift(1))
data =pd. concat ([ vol_t ,x1 ,x2 ,x3 ,x4 ,x5], axis=1)
data . columns = ['ftse_t ', 'dj_t ',
                  'ftse_t -1 ','dj_t -1 ',
                  'ftse_t -2 ','dj_t -2 ',
                  'ftse_t -3 ','dj_t -3 ',
                  'ftse_t -4 ','dj_t -4 ',
                  'ftse_t -5 ','dj_t -5 ']
data = data . dropna ()

cols_y = [ 'ftse_t ', 'dj_t ']
y = data [ cols_y ]

cols_x = [ 'ftse_t -1 ','dj_t -1 ',
       'ftse_t -2 ','dj_t -2 ',
       'ftse_t -3 ','dj_t -3 ',
       'ftse_t -4 ','dj_t -4 ',
       'ftse_t -5 ','dj_t -5 ']
x = data [ cols_x ]

归一化

num_attrib =10
scaler_x = preprocessing.MinMaxScaler(feature_range =(-1,1))
x = np.array (x).reshape((len(x),num_attrib))
x = scaler_x . fit_transform (x)

num_response =2
scaler_y = preprocessing . MinMaxScaler (feature_range =(0 , 1))
y = np. array (y). reshape (( len(y), num_response ))
y = scaler_y . fit_transform (y)

数据集拆分

train_end = 1131
data_end =len(y)
x_train =x[0: train_end ,]
x_test =x[train_end +1: data_end,]
y_train =y[0: train_end]
y_test =y[train_end +1: data_end]
x_train = np.reshape(x_train,(x_train.shape[0], 1, x_train.shape[1]))
x_test = np.reshape(x_test,(x_test.shape[0], 1, x_test.shape[1]))
print (" Shape of x_train is ",x_train . shape)  # (1131, 1, 10)
print (" Shape of x_test is ",x_test . shape)  # (185, 1, 10)

训练

seed =2016
num_epochs =20
np.random.seed ( seed )
model = Sequential()
model .add(SimpleRNN ( units =10 ,activation ='sigmoid',input_shape =(1 , num_attrib )))
model .add(Dense(units = num_response ,activation ='linear'))
sgd = SGD (lr =0.01 , momentum =0.90 , nesterov = True )
model . compile ( loss ='mean_squared_error',optimizer = sgd)
model .fit( x_train , y_train , batch_size =1, epochs = num_epochs)

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

预测

pred = fit1.predict (x_test ) 
# pred1 = scaler_y.inverse_transform (np. array( pred1 ). reshape (( len( pred1 ), 2)))

plt.plot(y_test[:,0])
plt.plot(pred[:,0])
plt.legend(['FTSE100','FTSE100 prediction'])
plt.show()

plt.plot(y_test[:,1])
plt.plot(pred[:,1])
plt.legend(['Dow Jones','Dow Jones prediction'])
plt.show()

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 为什么美女喜欢软件开发的gg做老公
  • LINQ体验系列文章导航
  • python 绘制条形图
  • 一个很好的svn托管站点
  • Gephi:can’t find java 1.8 or higher
  • 尿飞顿作灵思涌
  • Gephi 网络可视化——导入网络结构
  • DataGrid中使用CheckBox的CheckedChanged事件
  • Gephi 网络可视化——调整网络布局
  • (转)关于pipe()的详细解析
  • Gephi 网络可视化——调整节点大小
  • 哎呀哎呀哎呀~,我爱上了事件
  • Gephi 网络可视化——设置节点颜色
  • 3个字节的空txt文本文件
  • 上班久坐族的福利
  • 收藏网友的 源程序下载网
  • HomeBrew常规使用教程
  • Iterator 和 for...of 循环
  • Java编程基础24——递归练习
  • java正则表式的使用
  • Mocha测试初探
  • nginx 负载服务器优化
  • pdf文件如何在线转换为jpg图片
  • PHP那些事儿
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 汉诺塔算法
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ![CDATA[ ]] 是什么东东
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • ###STL(标准模板库)
  • $jQuery 重写Alert样式方法
  • (6)STL算法之转换
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (新)网络工程师考点串讲与真题详解
  • (一)认识微服务
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)VC++中ondraw在什么时候调用的
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .Net Core中Quartz的使用方法
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET中分布式服务