因此,我加载并预处理了数据以进行时间序列预测。我已经创建了一个模型,但是现在我不确定如何实际训练它。
代码如下:
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib as plt
# Loading Data
df = pd.read_csv("testdata.csv", header=0, parse_dates=[
0], names=['Month', 'People'], index_col=0)
print(df)
print(df.shape)
# Preprocessing
log_df_People = np.log(df.People)
print(log_df_People)
log_df_People_diff = log_df_People - log_df_People.shift()
print(log_df_People_diff)
log_df_People_diff.dropna(inplace=True)
# Creating the Model
model = tf.keras.Sequential()
model.add = tf.keras.layers.LSTM(100, activation="relu", input_shape=(2,))
model.add = tf.keras.layers.Dropout(rate=0.2)
model.add = tf.keras.layers.Dense(1, activation='relu')
model.compile(optimizer='adam', loss='mean_absolute_error',
metrics=['accuracy'])
# Training the Model?
我做了一些研究,但是没有关于如何专门训练模型进行时间序列预测的深入教程。
答案 0 :(得分:3)
目前尚不清楚您的数据框是什么样子以及为什么要记录它。但是在这里,我将向您展示如何使用LSTM
训练模型进行预测。
假设以下是您的数据:
df = pd.DataFrame({'People':[10,12,11,13,15,18]})
然后您出于某些原因log
:
log_df_People = np.log(df.People)
然后您这样移动:
import tensorflow as tf
X = log_df_People.to_numpy()[:-1]
Y = log_df_People.shift(-1).to_numpy()[:-1]
然后创建模型:
model = tf.keras.Sequential()
model.add = tf.keras.layers.LSTM(100, activation="relu", input_shape=(2,))
model.add = tf.keras.layers.Dropout(rate=0.2)
model.add = tf.keras.layers.Dense(1, activation='relu')
model.compile(optimizer='adam', loss='mean_absolute_error',
metrics=['accuracy'])
最后,您将模型训练了多个时期:
model.fit(X,Y,epochs=100)
但是通常您应该考虑使用滑动窗口进行预测,但这需要更多描述。