如何使用序数数据来训练LSTM网络?

2024-09-19 23:53:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在LSTM网络上工作,有不同类型的输入数据。其中大多数是度量数据,对于它们,我使用.shift函数来获得数据t-1并计算预测的百分比变化

但除此之外,我还有一个月列(1代表1月,12代表12月),所以百分比变化是没有用的。如何包含这些数据

以下是我如何包含我的度量数据:

Erzeugung["erzeugung_before"] = Erzeugung["solar__-_actual_aggregated_[mw]"].shift(1)
Erzeugung["Temperatur_before"] = Erzeugung["Temperatur"].shift(1)
Erzeugung["Globalstrahlung_before"] = Erzeugung["Globalstrahlung"].shift(1)

Erzeugung = Erzeugung.dropna()

Erzeugung["erzeugung_changes"] = (Erzeugung["solar__-_actual_aggregated_[mw]"] / Erzeugung["erzeugung_before"] - 1)
Erzeugung["Temperatur_changes"] = (Erzeugung["Temperatur"] / Erzeugung["Temperatur_before"] - 1)
Erzeugung["Globalstrahlung_changes"] = (Erzeugung["Globalstrahlung"] / Erzeugung["Globalstrahlung_before"] - 1)

Erzeugung["erzeugung_changes"] = Erzeugung["erzeugung_changes"].replace(np.nan, 0)
Erzeugung["Temperatur_changes"] = Erzeugung["Temperatur_changes"].replace(np.nan, 0)
Erzeugung["Globalstrahlung_changes"] = Erzeugung["Globalstrahlung_changes"].replace(np.nan, 0)

changes = Erzeugung[["erzeugung_changes", "Temperatur_changes", "Globalstrahlung_changes"]].values


X = []
Y = []

for i in range (0, len(changes) - 96):
    Y.append(changes[i,0])      
    X.append(np.array(changes[i+1:i+97]))

X = np.array(X).reshape(-1, 96, 3)
Y = np.array(Y)

print(X.shape)
print(Y.shape)

from keras.models import Sequential
from keras.layers import LSTM

model = Sequential()
model.add(LSTM(1, input_shape=(96, 3)))

model.compile(optimizer="rmsprop", loss="mse")
model.fit(X, Y, batch_size=480, epochs=10)

如何包含月份信息


Tags: 数据modelshiftnpnanarrayreplaceshape