ich möchte gerne mit tensorflow keras ein LSTM Netz aufbauen. Dafür muss ich meine Daten in eine bestimmte Form bringen.
Aktuell sind meine Daten wie folgt in einer Tabelle aufgebaut:
Zeit | Feature 1 | Feature 2 | Ergebnis
Brauchen tue ich eine Matrix X mit der Form (Anzahl der Samples, Zeitschritte die in jedem Sample berücksichtigt werden, Anzahl der Features). Außerdem brauche ich eine Matrix Y mit den Ergebnissen der jeweiligen Samples.
Ich würde das ganze gerne als Funktion schrieben, aber ich weiß nicht, wie ich meine Tabelle in die richtige Form bringen kann. Meine bisherigen Ansätze für eine Funktion sahen wie folgt aus:
Der Startindex gibt dabei an, wo es in meinen Daten losgehen soll und die Enddaten, bis wohin berücksichtigt werden soll. History soll ein Parameter sein, der angibt, wie weit die "Geschichte" berücksichtigt wird (also wie viele Zeitschritte zurück). Der Targetstep ist mein Vorhersageziel.
Code: Alles auswählen
def Strukturierte_Daten_LSTM(data, start index, end_index, history, target_step)
start_index = start_index + history_length
if end_index is None:
end_index = len(data) - target_step
X=[]
For i in range(start_index, end_index):
Indices = range(i, i+history_length)
Zeit | Feature 1 | Feature 2 | Ergebnis
t1 | x11 | x21 | y1
t2 | x12 | x22 | y2
t3 | x13 | x23 | y3
t4 | x14 | x24 | y4
t5 | x15 | x25 | y5
t6 | x16 | x26 | y6
t7 | x17 | x27 | y7
t8 | x18 | x28 | y8
Dann bräuchte ich als X zunächst eine Matrix, die wie folgt aussieht:
[[x11, x21],
[x12, x22],
[x13, x23],
[x14, x24],
[x15, x25],
[x16, x26],
[x17, x27],
[x18, x28]]
Und dann müsste ich diese mit X=X.reshape(2, 4, 2) in die richtige Form bringen können.
Ich habe allerdings keine Idee, wie ich diese erste Matrix kreire.
Kann mit jemand behilflich sein?
Vieien Dank vorab!
Beste Grüße,
Hinnerk8