tensorflow中AR模型做预测的案例

训练数据如下所示:

tensorflow中AR模型做预测的案例_第1张图片

预测结果如下所示:

tensorflow中AR模型做预测的案例_第2张图片

代码如下:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.contrib.timeseries.python.timeseries import NumpyReader

x=np.array(range(1000))
noise=np.random.uniform(-0.5,0.5,1000)
y=np.sin(np.pi*x/100)+x/200.+noise

data={
    tf.contrib.timeseries.TrainEvalFeatures.TIMES:x,
    tf.contrib.timeseries.TrainEvalFeatures.VALUES:y,
}

reader=NumpyReader(data)

train_input_fn=tf.contrib.timeseries.RandomWindowInputFn(reader,batch_size=16,window_size=40)
ar=tf.contrib.timeseries.ARRegressor(
    periodicities=200,input_window_size=30,output_window_size=10,num_features=1,loss=tf.contrib.timeseries.ARModel.NORMAL_LIKELIHOOD_LOSS
)
ar.train(input_fn=train_input_fn,steps=6000)

evaluation_input_fn=tf.contrib.timeseries.WholeDatasetInputFn(reader)
# keys of evaluation:['covariance','loss','mean','observed','start_tuple','times','global_step']
evaluation=ar.evaluate(input_fn=evaluation_input_fn,steps=1)
(predictions,)=tuple(ar.predict(input_fn=tf.contrib.timeseries.predict_continuation_input_fn(evaluation,steps=250)))
plt.figure(figsize=(15,5))
plt.plot(data['times'].reshape(-1),data['values'].reshape(-1),label='origin')
plt.plot(evaluation['times'].reshape(-1),evaluation['mean'].reshape(-1),label='evaluation')
plt.plot(predictions['times'].reshape(-1),predictions['mean'].reshape(-1),label='prediction')
plt.xlabel('time_step')
plt.ylabel('values')
plt.legend(loc=4)
plt.savefig('predict_result.jpg')
plt.show()

你可能感兴趣的:(Python深度学习)