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

2023-10-27

  本文展示了使用时序卷积网络(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 1420.0 1359.0 1075.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间序列预测——时序卷积网络(TCN) 的相关文章

随机推荐

  • 复旦微FM33LG048芯片使用(5)UART3数字外设的使用,引脚重映射

    uart3的引脚配置比较特殊 先要配置 GPIO InitStruct mode FL GPIO MODE DIGITAL 配置为数字外设 什么是数字外设 根据文档里描述 也就是配置了数字外设 引脚的输出输入由使用的外设决定 不需要我们配置
  • 什么是数据仓库?数据仓库的特点与架构演进

    1 为什么需要数据仓库 在没有数仓之前我们做数据分析到报表展示 依赖的都是从业务数据库中取数据来做分析 业务数据库主要是为业务操作服务 虽然可以用于分析 但需要做很多额外的调整 会存在以下几个问题 表结构关联关系错综复杂 业务数据库通常是根
  • js七牛云下载视频、音频、pdf、图片

    近期碰到一个需求 浏览器下载视频 音频等附件 原生组件video audio倒是支持下载 但是别的类型不行 而且无法通过下载按钮进行 常规下载思路使用a标签download属性下载附件 但是浏览器兼容性不好 而且针对视频 音频 pdf等浏览
  • C# 下载服务器的文件

    C 下载服务器的文件方法 带下载进度条 来源 C 下载文件并显示显示进度的方法实现 光脚丫思考的专栏 CSDN博客 float percent 0 try System Net HttpWebRequest Myrq System Net
  • C语言练习:通讯录

    通讯录代码 本文介绍如何使用C语言实现一个通讯录的功能 1 通讯录能存放1000个人的信息 每个人信息包含名字 年龄 性别 电话 地址 2 增加人的信息 3 删除指定人信息 4 查找指定人的信息 5 修改指定人的信息 通讯录包含三个部分 头
  • JS插件:粒子动画

    1 canvas nest js 配置参数 2 particle js 安装导入 特定参数项 配置参数 JSON格式 3 Particleground js 安装导入 配置参数 1 canvas nest js 轻量 只有1 6 kb 只能
  • C++中vector用法

    vector 向量 C 中的一种数据结构 确切的说是一个类 它相当于一个动态的数组 当程序员无法知道自己需要的数组的规模多大时 用其来解决问题可以达到最大节约空间的目的 用法 1 文件包含 首先在程序开头处加上 include以包含所需要的
  • memcached for Windows

    http www splinedancer com memcached win32 http code jellycan com memcached memcached 1 2 6 The original is the version f
  • 蓝桥杯Python->冒泡,插入,希尔 and 三种快速排序>货物摆放练习练习

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 4天 排序 交换 def Swap arr i j arr i arr j arr j arr i 冒泡排序 def BubbleSort arr n len arr for
  • Java 之访问控制权限(public,private,protected,default)详解

    class之间的关系做一个简单的定义 对于继承自己的class 可以认为他们都是自己的子女 而对于和自己一个目录下的classes 认为都是自己的朋友 继承自己的class 子女 本包中的class 朋友 public 公开 可以被所有其他
  • Fiddler抓包工具笔记

    一 简介 Fiddler代理相当于中介的角色 快捷键Shift F5去缓存刷新 二 抓包 1 设置过滤器 没有设置过滤器的话 会抓所有的包 非常乱会混淆 隐藏包含这些内容的URL 2 快速定位到需要的包 点击 Webforms菜单 界面分析
  • c++如何的倒计时如何停止并退出_合伙人退出时,该如何确定退出价格?

    这个问题问得特别好 相信这不单单只有题主有这方面的困惑 任何处于创业初期的合伙人们都会遇到合伙人的问题 今天接着这个提问 我们就来好好聊聊合伙人 希望会对各位创业者们有所启发 当然 如果你有企业经营方面的问题 也可以在线向我提问 一 哪些人
  • SaltStack installation & configuration

    四大功能 远程执行 配置管理 云管理 事件驱动 安装 https www cnblogs com xintiao p 10380656 html wget O etc yum repos d CentOS Base repo http mi
  • 信号量的实现和应用(一)

    生产者 消费者问题 从一个实际的问题 生产者和消费者出发 谈一谈为什么需要信号量 信号量用来做什么 问题描述 现在存在一个文件 buffer txt 作为一个共享缓存区 缓冲区同时最多只能保存10个数 现在一个生产者进程 依次向缓冲区写入整
  • 解决VSCode中python输出中文乱码的问题

    问题描述 在用python的print的时候 输出的中文出现乱码 解决方法 找到VSCode的用户配置文件 按下CTRL SHIF P 出现搜索框 在搜索框中输入 open user setting 然后就可以找到用户配置文件 json 打
  • 蓝桥杯算法训练VIP-方格取数

    题目 题目链接 题解 动态规划 本题和这个题几乎是完全一样 那个博客写的巨清楚 所以这里不写了 代码 include
  • Redis的Jedis连接池

    Jedis本身是线程不安全的 并且频繁的创建和销毁连接会有性能损耗 因此我们推荐大家使用Jedis连接池代替Jedis的直连方式 public class JedisConnectionFactory private static fina
  • BDD100K数据集下载和标签格式转换问题

    BDD100K数据集下载和标签格式转换问题 数据集介绍 加州大学伯克利分校的Berkeley DeepDrive数据集由超过100K的视频序列组成 包含各种各样的注释 包括图像级标记 对象边界框 可行驶区域 车道标记和全帧实例分割 数据集具
  • python中解决import matplotlib.pyplot as plt 出现报错:OSError: [WinError 193] %1 不是有效的 Win32 应用程序

    先上代码 import matplotlib pyplot as plt squares 1 4 9 16 25 fig ax plt subplots ax plot squares plt show 在pycharm运行出现报错 而在s
  • 时间序列预测——时序卷积网络(TCN)

    本文展示了使用时序卷积网络 TCN 进行时间序列预测的全过程 包含详细的注释 整个过程主要包括 数据导入 数据清洗 结构转化 建立TCN模型 训练模型 包括动态调整学习率和earlystopping的设置 预测 结果展示 误差评估等完整的时