Tensorflow 关于时间序列预测的一般问题

Tensorflow 关于时间序列预测的一般问题,tensorflow,machine-learning,time-series,Tensorflow,Machine Learning,Time Series,我有一个关于机器学习中的时间序列预测的一般性问题。这还不是关于编码,我只是想了解我应该如何构建模型 以下是我与我的模型相关的一些代码: def build_model(my_learning_rate, feature_layer): model = tf.keras.models.Sequential() model.add(feature_layer) model.add(tf.keras.layers.Dense(units=64, activation="relu&

我有一个关于机器学习中的时间序列预测的一般性问题。这还不是关于编码,我只是想了解我应该如何构建模型

以下是我与我的模型相关的一些代码:

def build_model(my_learning_rate, feature_layer):
  model = tf.keras.models.Sequential()
  model.add(feature_layer)
  model.add(tf.keras.layers.Dense(units=64, activation="relu"))
  model.add(tf.keras.layers.Dense(units=1))  
  model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=my_learning_rate), loss="mean_squared_error", metrics=[tf.keras.metrics.RootMeanSquaredError()])
  return model
这是我的要素图层:

<tf.Tensor: shape=(3000, 31), dtype=float32, numpy=
array([[0., 0., 1., ..., 0., 0., 0.],
       [0., 0., 1., ..., 0., 0., 0.],
       [0., 0., 1., ..., 0., 0., 0.],
       ...,
       [0., 0., 1., ..., 1., 0., 0.],
       [0., 0., 1., ..., 0., 1., 0.],
       [0., 0., 1., ..., 0., 0., 1.]], dtype=float32)>

我最近学习的时间序列预测建模技术与我构建模型的方式完全不同。该技术涉及使用过去值(我的标签!)作为特征,下一个值作为标签的时间窗口。它还涉及RNN和LSTM


我构建模型的方式和时间序列预测技术是否有根本的不同,是否会产生不同的结果?我的建模方法是否合理,或者我应该切换到正确的时间序列预测方法?

是的,时间序列通常使用LSTM和递归层,因为来自以前时间戳的数据对于创建成功的模型以创建准确的预测至关重要。例如,当我为时间序列模型建模时,我通常使用时间分布的一维卷积层。代码如下:

model = Sequential()
model.add(TimeDistributed(Conv1D(filters=64, kernel_size=1, activation='relu'),input_shape=(None, n_steps, n_features)))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(100, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(1))
如果您想自己实现这一点,您必须重塑原始X数组int o n_步骤(时间戳)和n_特征(数据中的特征数量)


希望这有帮助

你能澄清一下你到底想从什么中预测什么吗?例如,您是否试图预测您拥有的时间序列的标签(时间序列注释)?或者你是在试图预测未来时间点的标签(预测)?在后一种情况下,在进行预测(即时广播)时,您是否有可用于未来时间点的温度数据?标签的可能值是什么?它是离散的还是连续的?是的,如果你将温度值添加到每个数据数组中。如果这个答案是你想要的,请记住接受它。是的,这回答了我的问题。谢谢。在处理时间序列数据时,时间是数据图的x轴。通过添加时间分布包装器,索引1的维度将被视为时间维度(即时间维度)。谢谢,这是有意义的。