![简单的lstm时间序列预测-已经开源[Keras版本][开源进行中],第1张 简单的lstm时间序列预测-已经开源[Keras版本][开源进行中],第1张](/aiimages/%E7%AE%80%E5%8D%95%E7%9A%84lstm%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97%E9%A2%84%E6%B5%8B-%E5%B7%B2%E7%BB%8F%E5%BC%80%E6%BA%90%5BKeras%E7%89%88%E6%9C%AC%5D%5B%E5%BC%80%E6%BA%90%E8%BF%9B%E8%A1%8C%E4%B8%AD%5D.png)
网上有很多关于lstm时间序列的博客,我从不同博客那里借鉴了许多。
理论知识:
项目已开源上传到gitee上:
时间序列预测仓库: 本项目从简单入门到涉及部分高级预测代码,正在维护中,涉及单变量单步预测,单变量多步预测,以及多变量单步预测,多变量多步预测。
(gitee.com)
1.首先是构建时间序列数据,然后转化为监督学习数据集。
series_to_supervised()函数
from pandas import DataFrame
from pandas import concat
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
"""
Frame a time series as a supervised learning dataset.
Arguments:
data: Sequence of observations as a list or NumPy array.
n_in: Number of lag observations as input (X).
n_out: Number of observations as output (y).
dropnan: Boolean whether or not to drop rows with NaN values.
Returns:
Pandas DataFrame of series framed for supervised learning.
"""
n_vars = 1 if type(data) is list else data.shape[1]
df = DataFrame(data)
cols, names = list(), list()
# input sequence (t-n, ... t-1)
for i in range(n_in, 0, -1):
cols.append(df.shift(i))
names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
# forecast sequence (t, t+1, ... t+n)
for i in range(0, n_out):
cols.append(df.shift(-i))
if i == 0:
names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
else:
names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
# put it all together
agg = concat(cols, axis=1)
agg.columns = names
# drop rows with NaN values
if dropnan:
agg.dropna(inplace=True)
return agg
2.
Reference
6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现 - 知乎 (zhihu.com)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)