python-3.x - 对每个训练数据集使用 keras 模型多次拟合
问题描述
我有时间序列 10 个数据文件。其中我正在训练一个具有 5 个数据文件的 LSTM 模型,使用 3 个文件进行验证并使用 2 个文件进行测试。我使用了 Keras 的 fit_generator 并为训练和验证数据帧编写了一个生成器函数。但不幸的是,在预测期间,它的初始预测远高于原始目标。
另一方面,如果我对每个数据帧使用 model.fit,那么相对而言我会得到更好的结果。我的问题:“对于每个数据文件都是独立的(例如,每个包含从 0 小时到 24 小时的评级)的时间序列数据,在每个数据文件的每次迭代中使用拟合是否正确?”
for scaled_dataset in training_list:
reframed_new = series_to_supervised(scaled_dataset, n_in, n_out)
values = reframed_new.values
train = values
# split into input and outputs
train_X, train_y = train[:, :-1], train[:, -1]
# reshape input to be 3D [samples, timesteps, features]
train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
model.fit(train_X, train_y, epochs=50, batch_size=475, validation_data=None, verbose=1, shuffle=False)
在我的代码训练列表中包含所有单独的 5 个数据帧。因此,在每次迭代中,我都会拟合一个模型。任何人都可以告诉我这是正确的方法还是不提前谢谢
解决方案
这是我从你的问题中理解的:
您有 10 个不同的时间序列文件,它们都包含单独的数据,范围从 0hrs 到 24hrs。我的第一个问题是这些文件的顺序是什么,意思是文件没有。1 和文件编号。2等属于同一个序列?
- 如果是,您可以尝试附加这些数据帧并训练一个简单的预测模型并查看结果。
- 由于您所有的文件范围从 0 小时到 24 小时,您可以设置
batch_size
等于您的文件长度。生成器函数在您不知道数据集的结尾或时间序列长度不同的情况下很有用。
如果否,您必须针对不同的时间序列训练不同的模型。
推荐阅读
- java - 使用 JDBC setString() 在 Oracle 数据库中存储 CLOB 数据类型是否安全?
- java - C# 字典(顺序键)与 Java SortedMap 字典顺序
- javascript - 未评估值
- python - 图片在“detail_page”上传后损坏
- python - 如何根据 df 行中的值查找 df_s_t 中的值并将结果保存在 df['s_t'] 中?
- javascript - 在 vanilla JS 中定位下一个兄弟元素的父元素
- regex - 用模式python分割字符串
- git - 将 Githooks 作为独立脚本调用
- c# - 实时图表中的视觉元素?
- microsoft-cognitive - 认知服务自定义视觉 SDK NotFound 错误