我有一个用于时间序列预测的 tensorflow 实现。我的数据包含外生特征,我在我的训练输入中提供它们并评估输入。在预测步骤predict_continuation_input_fn
中,我的外生特征列会引发 KeyError。这是我的代码的简化版本:
features = (ex_0, ex_1, ex_2)
reader = tf.contrib.timeseries.CSVReader(
_DATA_FILE,
column_names=(tf.contrib.timeseries.TrainEvalFeatures.TIMES, tf.contrib.timeseries.TrainEvalFeatures.VALUES) + features,
column_dtypes=(tf.int64,tf.float32,tf.float32,tf.float32,tf.float32),
skip_header_lines=1)
estimator = tf.contrib.timeseries.StructuralEnsembleRegressor(
periodicities=[20],
num_features=1,
exogenous_feature_columns= [tf.contrib.layers.real_valued_column(column_name=f, dimension=1) for f in features])
train_input_fn=tf.contrib.timeseries.RandomWindowInputFn(reader, batch_size=4, window_size=100)
estimator.train(input_fn=train_input_fn, steps=20)
evaluation_input_fn = tf.contrib.timeseries.WholeDatasetInputFn(reader)
evaluation = estimator.evaluate(input_fn=evaluation_input_fn, steps=1)
predict_input_fn = tf.contrib.timeseries.predict_continuation_input_fn(
evaluation, steps=100)
(predictions,) = tuple(estimator.predict(input_fn=predict_input_fn))
此时我得到错误KeyError: 'ex_0'
。错误很明显,因为结果evaluation
变量不包含我的外生特征。predict_continuation_input_fn
有论据来获取 exogenous_features 但是我找不到任何有关如何将评估中的外生数据提供给该论点的文档。
我应该如何将这些功能提供给预测?我的实施有缺陷吗?建议非常受欢迎。