RNN核心之时间预测
数据如下所示:
这个数据是 12年飞机月流量,可视化得到下面的效果。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data_csv = pd.read_csv('./data.csv', usecols=[1])
plt.plot(data_csv)
首先我们进行预处理,将数据中 na 的数据去掉,然后将数据标准化到 0 ~ 1 之间。
数据预处理
data_csv = data_csv.dropna()
dataset = data_csv.values
dataset = dataset.astype('float32')
max_value = np.max(dataset)
min_value = np.min(dataset)
scalar = max_value - min_value
dataset = list(map(lambda x: x / scalar, dataset))
接着我们进行数据集的创建,我们想通过前面几个月的流量来预测当月的流量,比如我们希望通过前两个月的流量来预测当月的流量,我们可以将前两个月的流量当做输入,当月的流量当做输出。同时我们需要将我们的数据集分为训练集和测试集,通过测试集的效果来测试模型的性能,这里我们简单的将前面几年的数据作为训练集,后面两年的数据作为测试集。
def create_dataset(dataset, look_back=2):
dataX, dataY = [], []
for i in range(len(dataset) - look_back):
a = dataset[i:(i + look_back)]
dataX.append(a)
dataY.append(dataset[i + look_back])
return np.array(dataX), np.array(dataY)
创建好输入输出
data_X, data_Y = create_dataset(dataset)