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

时间序列特征提取 —— 获取日期相关的协变量

在做时间序列预测时,日期是很重要的特征。

很多由人类活动产生的时间序列都是以日为周期,受到周末、节假日、季度等因素的影响。

在这里插入图片描述

下面这段代码就给出一段时间内直接从时间中提取出的七种特征:

  • MOH : minute_of_hour
  • HOD : hour_of_day
  • DOM : day_of_month
  • DOW : day_of_week
  • DOY : day_of_year
  • MOY : month_of_year
  • WOY : week_of_year

可以自定义 起始时刻 start_date采样频率 freq序列长度 num_ts是否归一化 [ − 0.5 , 0.5 ] [-0.5, 0.5] [0.5,0.5]

import pandas as pd
import numpy as np
import datetime


class TimeCovariates(object):
    def __init__(self, start_date, num_ts=100, freq="H", normalized=True):
        self.start_date = start_date
        self.num_ts = num_ts
        self.freq = freq
        self.normalized = normalized
        self.dti = pd.date_range(self.start_date, periods=self.num_ts, freq=self.freq)
        self.var_names =  ['MOH', 'HOD', 'DOM', 'DOW', 'DOY', 'MOY', 'WOY']

    def _minute_of_hour(self):
        minutes = np.array(self.dti.minute, dtype=np.float)
        if self.normalized:
            minutes = minutes / 59.0 - 0.5
        return minutes

    def _hour_of_day(self):
        hours = np.array(self.dti.hour, dtype=np.float)
        if self.normalized:
            hours = hours / 23.0 - 0.5
        return hours

    def _day_of_week(self):
        dayWeek = np.array(self.dti.dayofweek, dtype=np.float)
        if self.normalized:
            dayWeek = dayWeek / 6.0 - 0.5
        return dayWeek

    def _day_of_month(self):
        dayMonth = np.array(self.dti.day, dtype=np.float)
        if self.normalized:
            dayMonth = dayMonth / 30.0 - 0.5
        return dayMonth

    def _day_of_year(self):
        dayYear = np.array(self.dti.dayofyear, dtype=np.float)
        if self.normalized:
            dayYear = dayYear / 364.0 - 0.5
        return dayYear

    def _month_of_year(self):
        monthYear = np.array(self.dti.month, dtype=np.float)
        if self.normalized:
            monthYear = monthYear / 11.0 - 0.5
        return monthYear

    def _week_of_year(self):
        weekYear = np.array(self.dti.weekofyear, dtype=np.float)
        if self.normalized:
            weekYear = weekYear / 51.0 - 0.5
        return weekYear

    def get_covariates(self):
        MOH = self._minute_of_hour().reshape(1, -1)
        HOD = self._hour_of_day().reshape(1, -1)
        DOM = self._day_of_month().reshape(1, -1)
        DOW = self._day_of_week().reshape(1, -1)
        DOY = self._day_of_year().reshape(1, -1)
        MOY = self._month_of_year().reshape(1, -1)
        WOY = self._week_of_year().reshape(1, -1)

        all_covs = [MOH, HOD, DOM, DOW, DOY, MOY, WOY]

        return np.vstack(all_covs)


测试

tc = TimeCovariates(datetime.datetime(2020, 5, 20), num_ts=100, freq="D", normalized=True)
vars = tc.get_covariates()
print(vars.shape)

(7, 100)

import matplotlib.pyplot as plt
plt.plot(vars.T, alpha=0.8)
plt.legend(labels=tc.var_names)
plt.show()

在这里插入图片描述

相关文章:

  • c#中高效的excel导入sqlserver的方法
  • DeepGLO
  • 《梦断代码》上市
  • Multi-Horizon Time Series Forecasting with Temporal Attention Learning
  • 网络互联设备之区别详解
  • Quantile RNN
  • 正式开始homeR的计划
  • 非线性状态空间模型与非线性自回归模型的联系
  • matplotlib 颜色名称表
  • 分布式缓存BeIT Memcached简介
  • 【pytorch】时间序列预测 —— 同时预测多个分位点
  • 关于Oracle 顽固的KILLED 状态的SESSION的处理
  • 科技论文的写作逻辑
  • C#中字符串操作函数
  • BibTex 的使用
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【React系列】如何构建React应用程序
  • Android 控件背景颜色处理
  • Android交互
  • CentOS7简单部署NFS
  • HTTP请求重发
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • python大佬养成计划----difflib模块
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • STAR法则
  • storm drpc实例
  • use Google search engine
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 不上全站https的网站你们就等着被恶心死吧
  • 缓存与缓冲
  • 深度学习入门:10门免费线上课程推荐
  • 《码出高效》学习笔记与书中错误记录
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • !$boo在php中什么意思,php前戏
  • #FPGA(基础知识)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (11)MATLAB PCA+SVM 人脸识别
  • (20050108)又读《平凡的世界》
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (day 12)JavaScript学习笔记(数组3)
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (三)elasticsearch 源码之启动流程分析
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .dwp和.webpart的区别
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET构架之我见
  • .NET企业级应用架构设计系列之技术选型
  • ::before和::after 常见的用法