时间序列预测——时序卷积网络(TCN)

  本文展示了使用时序卷积网络(TCN)进行时间序列预测的全过程,包含详细的注释。整个过程主要包括:数据导入、数据清洗、结构转化、建立TCN模型、训练模型(包括动态调整学习率和earlystopping的设置)、预测、结果展示、误差评估等完整的时间序列预测流程。
  本文使用的tcn库在本人上传的资源中,链接为tcn.py
  本文使用的数据集在本人上传的资源中,链接为mock_kaggle.csv

import pandas as pd
import numpy as np
import math
from matplotlib import pyplot as plt
from matplotlib.pylab import mpl
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
from keras import backend as K
from keras.layers import LeakyReLU
from tcn import TCN,tcn_full_summary
from sklearn.metrics import mean_squared_error # 均方误差
from keras.callbacks import LearningRateScheduler
from keras.callbacks import EarlyStopping
from tensorflow.keras import Input, Model,Sequential

mpl.rcParams['font.sans-serif'] = ['SimHei']   #显示中文
mpl.rcParams['axes.unicode_minus']=False       #显示负号

取数据

data=pd.read_csv('mock_kaggle.csv',encoding ='gbk',parse_dates=['datetime'])
Date=pd.to_datetime(data.datetime)
data['date'] = Date.map(lambda x: x.strftime('%Y-%m-%d'))
datanew=data.set_index(Date)
series = pd.Series(datanew['股票'].values, index=datanew['date'])
series
date
2014-01-01    4972
2014-01-02    4902
2014-01-03    4843
2014-01-04    4750
2014-01-05    4654
              ... 
2016-07-27    3179
2016-07-28    3071
2016-07-29    4095
2016-07-30    3825
2016-07-31    3642
Length: 937, dtype: int64

滞后扩充数据

dataframe1 = pd.DataFrame()
num_hour = 16
for i in range(num_hour,0,-1):
    dataframe1['t-'+str(i)] = series.shift(i)
dataframe1['t'] = series.values
dataframe3=dataframe1.dropna()
dataframe3.index=range(len(dataframe3))
dataframe3
t-16 t-15 t-14 t-13 t-12 t-11 t-10 t-9 t-8 t-7 t-6 t-5 t-4 t-3 t-2 t-1 t
0 4972.0 4902.0 4843.0 4750.0 4654.0 4509.0 4329.0 4104.0 4459.0 5043.0 5239.0 5118.0 4984.0 4904.0 4822.0 4728.0 4464
1 4902.0 4843.0 4750.0 4654.0 4509.0 4329.0 4104.0 4459.0 5043.0 5239.0 5118.0 4984.0 4904.0 4822.0 4728.0 4464.0 4265
2 4843.0 4750.0 4654.0 4509.0 4329.0 4104.0 4459.0 5043.0 5239.0 5118.0 4984.0 4904.0 4822.0 4728.0 4464.0 4265.0 4161
3 4750.0 4654.0 4509.0 4329.0 4104.0 4459.0 5043.0 5239.0 5118.0 4984.0 4904.0 4822.0 4728.0 4464.0 4265.0 4161.0 4091
4 4654.0 4509.0 4329.0 4104.0 4459.0 5043.0 5239.0 5118.0 4984.0 4904.0 4822.0 4728.0 4464.0 4265.0 4161.0 4091.0 3964
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
916 1939.0 1967.0 1670.0 1532.0 1343.0 1022.0 813.0
  • 60
    点赞
  • 516
    收藏
    觉得还不错? 一键收藏
  • 103
    评论
将多尺度卷积(MSC)与时序卷积网络TCN)结合用于时间序列预测可以带来一些优势: 1. 捕捉多尺度特征:多尺度卷积可以在不同尺度上感知时间序列数据的特征。对于时间序列数据,不同的时间尺度可能包含不同的模式和趋势。通过使用多尺度卷积,可以同时考虑不同时间尺度的特征,从而更好地捕捉时间序列数据的动态特性。 2. 增加模型表达能力:多尺度卷积TCN都是强大的特征提取器。通过将它们组合在一起,可以增加模型的表达能力。多尺度卷积可以提供更丰富的特征表示,而TCN可以通过增加网络深度来捕捉更复杂的时间依赖关系。这种组合可以使模型更加灵活和适应不同的时间序列模式。 3. 改善长期依赖性建模:TCN在处理长期依赖性时具有优势。传统的循环神经网络(RNN)在处理长期依赖性时可能会遭遇梯度消失或梯度爆炸的问题,而TCN通过使用卷积操作来捕捉长期依赖性,可以更好地处理这个问题。将多尺度卷积TCN结合,可以在更长的时间范围内建模时间序列数据的依赖关系。 4. 提高预测性能:多尺度卷积TCN的结合可以提高时间序列预测的性能。多尺度卷积可以提供更全面和多样性的特征表示,而TCN可以更好地建模时间序列数据的依赖关系。通过结合这两个方法,可以获得更准确的预测结果。 总之,将多尺度卷积TCN结合应用于时间序列预测任务,可以充分利用它们各自的优势,提高模型的表达能力、长期依赖性建模能力和预测性能。这种组合可以更好地处理时间序列数据的复杂性和变化性。
评论 103
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值