时间序列预测 | 训练模型

我已经加载并预处理了用于时间序列预测的数据。我创建了一个模型,但现在我不确定如何实际训练它。

这是代码:

import tensorflow as tfimport pandas as pdimport numpy as npimport matplotlib as plt# 加载数据df = pd.read_csv("testdata.csv", header=0, parse_dates=[                 0], names=['Month', 'People'], index_col=0)print(df)print(df.shape)# 预处理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)# 创建模型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'])# 训练模型?

我做了一些研究,但并没有关于如何具体训练时间序列预测模型的深入教程。


回答:

你的数据框看起来如何以及为什么要对其进行对数处理并不清楚。但在这里我将向你展示如何使用LSTM来训练一个用于预测的模型。假设以下是你的数据:

df = pd.DataFrame({'People':[10,12,11,13,15,18]})

然后你出于某些原因进行了log处理:

log_df_People = np.log(df.People)

然后你这样进行移位:

import tensorflow as tfX = 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)

但一般来说,你应该考虑使用滑动窗口来进行预测,但这需要更多的描述。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注