Python时间序列LSTM预测系列教程(2)-单变量
来源:互联网 发布:乐视手机移动网络设置 编辑:程序博客网 时间:2024/06/05 11:59
单变量LSTM预测模型(2)
教程原文连接
数据准备
3步走:
1、将时间序列转换成监督学习问题
2、将时间序列进行处理,使之稳定
3、将观测值进行缩放
1、时间序列转监督学习数据
# coding=utf-8 from pandas import read_csv from pandas import datetime from pandas import DataFrame from pandas import concat #load data def parser(x): return datetime.strptime(x, '%Y/%m/%d') series = read_csv('data_set/shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser) ''' 将数据转换成有监督数据 即包含input output 训练的目的就是找到训练数据input和output的关系 此处的input是t时间步的数据,output为t+1时间步的数据 具体实现就是将整体的时间数据向后滑动一格,和原始数据拼接,就是有监督的数据 ''' def timeseries_to_supervised(data, lag=1):#lag表示的是当前的值只与历史lag个时间步长的值有关,也就是用lag个数据预测下一个 df = DataFrame(data) colums = [df.shift(i) for i in range(1, lag+1)]#原始数据时间窗向后移动lag步长 colums.append(df)#拼接数据 df = concat(colums, axis=1)#横向拼接重塑数据,格式:input putput df.fillna(0, inplace=True)#由于数据整体向后滑动lag后,前面的lag个数据是Na形式,用0来填充 return df X = series.values supervised = timeseries_to_supervised(X,1)print(supervised.head())
2、时间序列转换成稳定数据
通过DF检验,发现shampoo数据是非稳定的,意味着数据有长期趋势/周期趋势,此处是长期的上升趋势
可以将趋势从观测值当中移除,最后再加回到预测值中
常见的去趋势的方法是差分,用当前时间步 t 的观测值减去时间步 t-1 的值
# coding=utf-8 from pandas import read_csvfrom pandas import datetimefrom pandas import Series #load data def parser(x): return datetime.strptime(x, '%Y/%m/%d')series = read_csv('data_set/shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser) #做差分,去趋势,获得差分序列 def difference(dataset, interval=1): diff = list() for i in range(interval, len(dataset)): value = dataset[i]-dataset[i-interval]#当前时间步t的值减去时间步t-interval的值 diff.append(value) return Series(diff) #将预测值进行逆处理,得到真实的销售预测def inverse_difference(history, yhat, interval=1):#历史数据,预测数据,差分间隔 return yhat+history[-interval] #数据处理 #将数据转换成稳定的 differenced = difference(series, 1) print(differenced.head()) #逆处理,从差分逆转得到真实值 inverted = list() for i in range(len(differenced)): value = inverse_difference(series, differenced[i], len(series)-i) inverted.append(value)inverted = Series(inverted) print(inverted.head())
3、观测值缩放
NN都希望数据在激活函数的范围内
LSTMs的默认激活函数是 tanh , 其范围为 [ -1, 1 ],这也是期望的序列数据的范围
# coding=utf-8 from pandas import read_csv from pandas import datetime from pandas import Series from sklearn.preprocessing import MinMaxScaler #load data def parser(x): return datetime.strptime(x, '%Y/%m/%d') series = read_csv('data_set/shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)print series.head() #缩放 X = series.values X = X.reshape(len(X),1)#MinMaxScaler函数需要矩阵作为输入,所以reshape数据为矩阵scaler = MinMaxScalar(feature_range=(-1,1))#定义缩放范围scaler = scaler.fit(X)#缩放数据scalered_X = scaler.transform(X)scalered_series = Series(scalered_X[:,0]) print scalered_series.head() #逆缩放 inverted_X = scaler.inverse_transform(scalered_X) inverted_series = Series(inverted_X[:,0]) print inverted_series.head()
阅读全文
0 0
- Python时间序列LSTM预测系列教程(2)-单变量
- Python时间序列LSTM预测系列教程(1)-单变量
- Python时间序列LSTM预测系列教程(3)-单变量
- Python时间序列LSTM预测系列教程(4)-单变量
- Python时间序列LSTM预测系列教程(5)-单变量
- Python时间序列LSTM预测系列教程(6)-单变量
- Python时间序列LSTM预测系列教程(10)-多步预测
- Python时间序列LSTM预测系列教程(11)-多步预测
- Python时间序列LSTM预测系列教程(7)-多变量
- Python时间序列LSTM预测系列教程(8)-多变量
- Python时间序列LSTM预测系列教程(9)-多变量
- LSTM预测时间序列
- LSTM预测时间序列
- LSTM 时间序列预测 matlab
- Pytorch LSTM 时间序列预测
- python利用LSTM进行时间序列分析预测
- python利用LSTM进行时间序列分析预测
- Python中利用LSTM模型进行时间序列预测分析
- JSON 教程
- UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
- spring boot中使用JdbcTemplate
- 用Android写注册界面
- IRP数据的传输方式,对应彭荣
- Python时间序列LSTM预测系列教程(2)-单变量
- django学习(二)之分页、vue.js数据绑定及模态对话框的使用
- python相关的安装指南
- Mariadb安装
- Spring之WebSocket网页聊天以及服务器推送
- 数学建模(9)——霍夫(Hough)变换圆检测
- HDU1950[Bridging signals] LIS模型 (nlogn)
- java进阶书籍推荐(不包括基础)
- HDU_1160_FatMouse's Speed