时间序列--平滑+特征工程

2023-11-08

https://machinelearningmastery.com/moving-average-smoothing-for-time-series-forecasting-python/

平滑的希望是消除噪声,更好地揭示潜在的因果过程的信号。移动平均线是时间序列分析和时间序列预测中常用的一种简单的平滑方法。计算移动平均线需要创建一个新的序列,其中的值由原始时间序列中原始观测值的平均值组成。

1.center_ma(t) = mean(obs(t-1), obs(t), obs(t+1))

2.trail_ma(t) = mean(obs(t-2), obs(t-1), obs(t))

计算时间序列的移动平均值需要对数据进行一些假设。假设趋势和季节成分已经从时间序列中移除。这意味着你的时间序列是平稳的,或者没有明显的趋势(长期的增减运动)或者季节性(一致的周期结构)。

例子

原始数据长这样

Date           value
1959-01-01 35
1959-01-02 32
1959-01-03 30
1959-01-04 31
1959-01-05 44

from pandas import Series
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
# Tail-rolling average transform
rolling = series.rolling(window=3)
rolling_mean = rolling.mean()
print(rolling_mean.head(10))
# plot original and transformed dataset
series.plot()
rolling_mean.plot(color='red')
pyplot.show()

平滑求平均(窗口设为三)之后长这样

Date
1959-01-01          NaN
1959-01-02          NaN
1959-01-03    32.333333
1959-01-04    31.000000
1959-01-05    35.000000
1959-01-06    34.666667
1959-01-07    39.333333
1959-01-08    39.000000
1959-01-09    42.000000
1959-01-10    36.000000

效果图如下

Moving Average Transform

只看前100或许更明显

Zoomed Moving Average Transform

################现在我把滑动平均当做新特征

之前已有的特征t-1,现在再加一个特征

from pandas import Series
from pandas import DataFrame
from pandas import concat
series = Series.from_csv('daily-total-female-births.csv', header=0)
df = DataFrame(series.values)
width = 3
lag1 = df.shift(1)
lag3 = df.shift(width - 1)
window = lag3.rolling(window=width)
means = window.mean()
dataframe = concat([means, lag1, df], axis=1)
dataframe.columns = ['mean', 't-1', 't+1']
print(dataframe.head(10))

效果如下: 

        mean   t-1     t
0        NaN   NaN   35
1        NaN  35.0   32
2        NaN  32.0   30
3        NaN  30.0   31
4  32.333333  31.0   44
5  31.000000  44.0   29
6  35.000000  29.0   45
7  34.666667  45.0   43
8  39.333333  43.0   38
9  39.000000  38.0   27

这里我们将t-1三个窗口的滑动平均当做新的feature(而不是t时刻的滑动平均)预测t时刻的值

上诉代码的另一种直接实现形式

from pandas import Series
from numpy import mean
from sklearn.metrics import mean_squared_error
from matplotlib import pyplot
series = Series.from_csv('daily-total-female-births.csv', header=0)
# prepare situation
X = series.values
window = 3
history = [X[i] for i in range(window)]
test = [X[i] for i in range(window, len(X))]
predictions = list()
# walk forward over time steps in test
for t in range(len(test)):
	length = len(history)
	yhat = mean([history[i] for i in range(length-window,length)])
	obs = test[t]
	predictions.append(yhat)
	history.append(obs)
	print('predicted=%f, expected=%f' % (yhat, obs))
error = mean_squared_error(test, predictions)
print('Test MSE: %.3f' % error)
# plot
pyplot.plot(test)
pyplot.plot(predictions, color='red')
pyplot.show()
# zoom plot
pyplot.plot(test[0:100])
pyplot.plot(predictions[0:100], color='red')
pyplot.show()

好了,构建新特征之后,我们看一下效果吧

Moving Average Predictions 

当然不是说这个模型有多好,这只是一个baseline,重点在特征工程的构建上面

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间序列--平滑+特征工程 的相关文章

  • 时间序列-ARIMA模型

    数据平稳性与差分法 平稳性 平稳性就是要求经由样本时间序列所得到的拟合曲线 在未来的一段期间内仍能顺着现有的形态 惯性 地延续下 平稳性要求序列的均值和方差不发生明显变化 严平稳与弱平稳 严平稳 严平稳表示的分布不随时间的改变而改变 如 白
  • Python绘制时序图、自相关图和偏自相关图。

    import pandas as pd import matplotlib pyplot as plt import seaborn as sns import statsmodels api as sm sns set theme 设置风
  • 时序预测

    时序预测 MATLAB实现ARIMA时间序列预测 armax函数 本程序基于MATLAB的armax函数实现arima时间序列预测 实现了模型趋势分析 序列差分 序列平稳化 AIC准则模型参数识别与定阶 预测结果与误差分析过程 逻辑清晰 数
  • 时序预测

    时序预测 MATLAB实现CNN LSTM卷积长短期记忆神经网络时间序列预测 风电功率预测 目录 时序预测 MATLAB实现CNN LSTM卷积长短期记忆神经网络时间序列预测 风电功率预测 预测效果 基本介绍 程序设计 参考资料 预测效果
  • 时序预测

    时序预测 MATLAB实现PSO BiLSTM 粒子群优化双向长短期记忆神经网络 时间序列预测 目录 时序预测 MATLAB实现PSO BiLSTM 粒子群优化双向长短期记忆神经网络 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型
  • 多维时序

    多维时序 Matlab实现BiLSTM Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 Matlab实现BiLSTM Adaboost和BiLSTM多变量时间序列预测对比 预测效果 基本介绍 模型描述 程序设计 参考资
  • 时间序列--残差分析

    残差 y yhat 一般我们就停止在这里了 但是如果残差表现的有某种形式 代表我们的模型需要进一步改进 如果残差表现的杂乱无章 代表确实没什么别的信息好提取了 现在用最naive的model 上一个时间的值 yhat看看残差表现吧 关于残差
  • 时序预测

    时序预测 MATLAB实现SSA CNN GRU麻雀算法优化卷积门控循环单元时间序列预测 目录 时序预测 MATLAB实现SSA CNN GRU麻雀算法优化卷积门控循环单元时间序列预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测
  • R语言 时间序列ARIMA模型方法

    原理什么的百度一搜一堆 看不明白 先学会用这个工具吧 ARIMA 全称为自回归积分滑动平均模型 Autoregressive Integrated Moving Average Model 简记ARIMA 是由博克思 Box 和詹金斯 Je
  • 时序预测

    时序预测 MATLAB实现GWO LSTM灰狼算法优化长短期记忆神经网络时间序列预测 目录 时序预测 MATLAB实现GWO LSTM灰狼算法优化长短期记忆神经网络时间序列预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基
  • 时序预测

    时序预测 MATLAB实现MLP多层感知机时间序列预测 目录 时序预测 MATLAB实现MLP多层感知机时间序列预测 预测效果 基本介绍 模型特性 程序设计 学习总结 预测效果 基本介绍
  • 时序预测

    时序预测 MATLAB实现时间序列回归之评估模型残差及统计分布 目录 时序预测 MATLAB实现时间序列回归之评估模型残差及统计分布 基本介绍 程序设计 异方差性 统计分布 学习总结 参考资料 致谢 基本介绍 残差分析的基本目的是检查 CL
  • 时序预测

    时序预测 MATLAB实现PSO LSSVM粒子群算法优化最小二乘支持向量机时间序列预测未来 目录 时序预测 MATLAB实现PSO LSSVM粒子群算法优化最小二乘支持向量机时间序列预测未来 预测效果 基本介绍 模型描述 程序设计 参考资
  • 【数据分析】基于时间序列的预测方法

    时间序列预测 目录 时间序列预测 1 时间序列介绍 2 原始数据集 3 导入数据 4 检测时间序列的平稳性 5 如何使时间序列平稳 5 1 估计和消除趋势 5 1 1 对数转换 5 1 2 移动平均 5 2 消除趋势和季节性 5 2 1 差
  • 多维时序

    多维时序 MATLAB实现Attention GRU多变量时间序列预测 注意力机制融合门控循环单元 即TPA GRU 时间注意力机制结合门控循环单元 目录 多维时序 MATLAB实现Attention GRU多变量时间序列预测 注意力机制融
  • 时序预测

    时序预测 MATLAB实现时间序列回归之Bootstrapped测试 目录 时序预测 MATLAB实现时间序列回归之Bootstrapped测试 基本介绍 程序设计 学习小结 参考资料 基本介绍 对传统规格测试中尺寸失真的另一种反应是自举
  • 时间序列预测之区间预测方法(PIs:MVE&Delta&Bayesian&Bootstrap&LUBE)

    文章目录 前言 一 预测区间的评价指标 1 PICP PI coverage probability 2 PINAW PI normalized averaged width 3 CWC coverage width based crite
  • 多维时序

    多维时序 MATLAB实现GTO CNN LSTM人工大猩猩部队优化卷积长短期记忆神经网络多变量多步时间序列预测 目录 多维时序 MATLAB实现GTO CNN LSTM人工大猩猩部队优化卷积长短期记忆神经网络多变量多步时间序列预测 预测效
  • 时序预测

    时序预测 MATLAB实现GM 1 1 灰色时间序列预测 目录 时序预测 MATLAB实现GM 1 1 灰色时间序列预测 预测效果 基本介绍 建模步骤 程序设计 学习总结 参考资料 预测效果 基本介绍 GM 1 1 模型的预测原理是 对某一
  • 机器学习笔记 - 用于时间序列分析的深度学习技术

    一 简述 过去 时间序列分析采用自回归综合移动平均线等传统统计方法 然而 随着深度学习的出现 研究人员探索了各种神经网络架构来建模和预测时间序列数据 深度学习技术 例如 LSTM 长短期记忆 卷积神经网络和自动编码器 已经在时间序列预测 异

随机推荐

  • Linux内核移植

    目录 创建VSCode 工程 NXP官方开发板Linux 内核编译 修改顶层Makefile 配置并编译Linux内核 生成zImage和 dtb Linux 内核启动测试 根文件系统缺失错误 在Linux中添加自己的开发板 添加开发板默认
  • matlab仿真gmid电路,bandgap电路稳定性仿真---频响、相位裕度、环路增益

    仿真需要对原理图稍作修改 需在运放的闭环路径中加入iprobe元件 电路中存在两个反馈电路 一个正反馈 如图1组成路径 一个负反馈 如图2组成路径 两个反馈都经过了运放的输出端 故我这儿加在了输出端 可以同时仿真出两个反馈环路的频率响应 环
  • spring boot2整合kafka及遇到Exception thrown when sending a message with key='null'问题

    spring boot2整合kafka及遇到Exception thrown when sending a message with key null 问题 最近在学习spring boot2和kafka 就用学着使用spring boot
  • SpringBoot之CommandLineRunner接口和ApplicationRunner接口

    我们在开发中可能会有这样的情景 需要在容器启动的时候执行一些内容 比如读取配置文件 数据库连接之类的 SpringBoot给我们提供了两个接口来帮助我们实现这种需求 这两个接口分别为CommandLineRunner和Application
  • SQL技巧:如何统计博客每天的总点击量和每天的总点击人数

    最近由于工作安排 需要统计一篇火爆的博客每天的总点击量和每天的总点击人数 其实主要考验的就是编写SQL的能力 这里我们需要用到 GROUP BY 和 COUNT关键字 关于这2个关键字的用法 网上有很多 这里不再赘述 分组统计每天的总点击量
  • Qt之QtSoapHttpTransport 访问WebService

    简述 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据 Q
  • win10 安装mingw 使用makefile

    下载了一个新代码 里面有 h c 和 Makefile文件 说明文件中写道先编译 compiling Type make in a shell 在控制台上输入make 首先win r打开控制台 输入cmd 输入e 回车 cd github
  • mybatis查询返回空,sql数据库执行有数据

    需要编写一个统计功能 在Navicat Premium里调整好sql 然后编写后台代码 controller service serviceImpl dao 在serviceImpl 上添加 Service 注解 在dao 添加 Repos
  • 【测试 3】三、软件测试方法

    4 软件测试方法 包括白盒测试 灰盒测试 黑盒测试 静态测试 动态测试 手动测试 自动测试等 学习目标 熟悉白盒测试方法 掌握黑盒测试方法 掌握黑盒测试用例设计的方法 等价类划分法 边界值分析法 因果 图分析法 判定表分析法 正交试验法等
  • 图像特征提取三大算法:HOG特征,LBP特征,Haar特征

    一 HOG特征 from http dataunion org 20584 html 1 HOG特征 方向梯度直方图 Histogram of Oriented Gradient HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的
  • Intellij IDEA运行报Command line is too long的解决办法

    报错信息大概如下 Error running xxx Command line is too long Shorten command line for xxx or also for Application default configu
  • leet116. 每个节点的右向指针

    题目 给定一个二叉树 struct TreeLinkNode TreeLinkNode left TreeLinkNode right TreeLinkNode next 填充他的每个 next 下一个 指针 让这个指针指向其下一个右侧节点
  • Mybatis-Plus-【通俗易懂全讲解】

    Mybatis Plus 简介 MyBatis Plus opens new window 简称 MP 是一个 MyBatis opens new window 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率
  • 08-go mod和vendor

    文章目录 1 go mod 1 1 创建项目 1 2 mod初始化 1 3 重新构建依赖 1 4 编译 2 vendor 2 1 拷贝依赖 2 2 使用vendor目录编译 1 go mod 1 1 创建项目 创建一个目录 root liu
  • QT中私有公有化(Q_DECLARE_PUBLIC Q_DECLARE_PRIVATE)原理小DEMO

    结果 b ljtcnt 8889 b ljtcnt 1457 代码如下 DrawToolButton h ifndef DrawToolButton H define DrawToolButton H include
  • CSDN中发布文章时上传图片上传失败的问题

    多是与搜狗输入法有关联 解决办法 在需要上传图片的时候切换到其他的输入法即可正常上传
  • Python中常用的正则表达式

    正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些字符的组合 组成一个 规则字符串 这个 规则字符串 用来表达对字符串的一种过滤逻辑 非python独有 但是python的re模块提供了实现 在python中写正
  • python实战-JSON形式爬虫-批量爬取图片并下载

    文章目录 一 前言 二 思路 1 网站返回内容 2 url分页结构 3 根据请求快速构造代码 三 具体代码的实现 四 总结 一 前言 上一篇文章已经对html形式的爬虫进行实战 批量爬取电影下载链接 接下来将实战json形式爬虫 批量爬取并
  • Java环境配置

    文章目录 windows环境 linux环境 yum安装 压缩包安装 首先需官网下载所需版本jdk 注意与机器对应 官网下载地址 https www oracle com technetwork cn java javase downloa
  • 时间序列--平滑+特征工程

    https machinelearningmastery com moving average smoothing for time series forecasting python 平滑的希望是消除噪声 更好地揭示潜在的因果过程的信号