簡體   English   中英

輸入到 LSTM 的時間序列

[英]Timeseries input to an LSTM

我有包含從不同位置收集的水樣的數據集。 例如,ABC1 水樣取自亞利桑那州的一條河流,而 ABC2 水樣取自波士頓的一條河流。 它們都是河流,它們具有相同的特征列(pH、溫度等),但它們位於不同的位置,因此特征的變化對它們來說是個體的。 所以我的目標是創建一條河流 model因為我沒有足夠的數據來創建單個模型。 我想預測下個月的值總共有 11 列。 我的數據集如下所示:

Date         Sample_Name        pH    temp    etc...

2009-01-01    ABC1              7.2    12
2009-01-02    ABC2              5.5    11
.
.
2009-01-02    ABC1              7.2    10
2009-01-02    ABC2              7.3    10
.
.
2013-06-02    ABC2              6.5    22
2013-06-04    ABC1              6.5    22
.
2015-01-05    ABC1              8.9    13
2015-01-05    ABC4              8.8    13

我想將每個樣本及其序列提供給 LSTM model。 例如; ABC1 的每個測量(行)必須作為序列或批次提供給 model。 是否可以使用 TimeseriesGenerator 進行這種數據准備? 如前所述,我如何准備我的數據以將其提供給 model? 使用日期和樣本名稱(按字母順序)對數據集進行排序是否也有幫助? 我正在努力實現這樣的目標

我想使用以下方法生成數據:

from keras.preprocessing.sequence import TimeseriesGenerator
n_timesteps = 2
n_features = 10
batch_size = 5
generator = TimeseriesGenerator(df, df, length, sampling_rate = 10, stride = 1, batch_size = batch_size)

我想將數據輸入的簡單 LSTM model:

from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras.utils import Sequence

model = Sequential()
model.add(LSTM(n_features, activation='relu', input_shape=(n_timesteps, n_features)))
model.add(Dense(10))
model.compile(optimizer='adam', loss='mse', metrics = ['accuracy'])

查看文檔,tf.keras.preprocessing.sequence.TimeseriesGenerator 不能將字典作為第一個參數。 “切片”錯誤只是這一事實的體現,因為 function 嘗試使用第一個參數(dict)的切片並失敗。 再次來自文檔:

Arguments:數據:包含連續數據點(時間步長)的可索引生成器(例如列表或 Numpy 數組)。

所以也許你想傳遞input_dict['ABC1']或者可能input_dict['ABC1'].values

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM