python - 平滑要在 ARIMA 中使用的时间序列数据
问题描述
我是机器学习的新手。我想要做的是平滑数据集,当绘制看起来像这样时。
蓝线是训练数据,橙线是测试数据。时间序列数据是股票的每日收盘价。
有没有办法让它平滑?我尝试过应用对数转换,但似乎没有多大帮助。
生成图表的代码:
#general
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
import yfinance as yf
#ML stuff
from sklearn.preprocessing import MinMaxScaler
ticker = "0118.KL"
data = yf.Ticker(ticker)
df = data.history(start="2019-01-01",end="2020-04-30")
df = df.filter(items=['Close'])
train = df[:-30]
test = df[-30:]
train = np.log(train['Close'])
test = np.log(test['Close'])
plt.plot(train)
plt.plot(test)
plt.show()
解决方案
最简单的方法是使用移动平均线。可以在此处找到教程。
从时间序列的角度来看,平滑数据不会改变 Box-Jenkins 设置中的大部分标识(例如模型)(我假设这是您的 AI 框架中使用的)。但是,如果您在使用另一种估计范式训练模型之前对数据进行平滑处理,您的标准误和估计可能会出现偏差。
在估计后平滑数据可能有助于可视化您正在做什么,但不会反映您训练的模型的预测。
推荐阅读
- ios - UITableView - 在 Xamarin 中动画插入行
- ansible - Ansible lineinfile 在编辑前添加新行
- c# - 使用 Expression.Lambda 制作 lambda 表达式时如何使用变量
>() - java - Spring Boot ConfigurationProperties - 未映射基类
- c# - C# - 测量经过时间的最有效方法
- python - 带有 CSV 的 Jinja2 模板中的 For 循环
- javascript - 在Javascript中将窗口变量作为参数传递
- javascript - 从另一个 JS 文件访问 java 对象时出错。this.firstinput=element(by.model("first"));元素未定义
- ios - 如何使用 C 在 iOS 中打开文件?
- php - 如何在 Sensei LMS 证书插件 PDF 中显示自定义字段