Я работаю над проблемой прогнозирования временных рядов, используя модель LSTM, чтобы предсказать следующее значение времени в пути на каждом шаге. Набор данных содержит 5-минутные значения времени агрегированного времени для конкретной поездки. < /P>
Чтобы повысить производительность модели, я объединил: < /p>
10 Забатых значений времени прохождения (то есть, T-1 до T-10) с использованием Splliding Window Method < /p>
9 топологические функции, извлеченные из того же 10-VALE, использующего e.com, с использованием капли. Числа, энтропия, нормы L1/L2)
На каждом временном шаге, i:
[*] Возьмите окно катания из 10 прошлых значений.
Извлечение 9 TDA Особенности из этого окна. /> сохранить те же 10 значений, что и функции лага. /> Тогда я изменяю данные как:
образцы = число Windows
timesteps = 1
= 19 (9 TDA + 10 LAGS)
: strong> : 9 (9 tda + 10 lAgs) /> Достоверен ли этот подход для прогнозирования временных рядов на основе LSTM? Особенности?def extract_all_features(series, win=10, dim=3, delay=1):
data = []
for i in range(len(series) - win - 10):
segment = series[i:i+win]
cloud = time_delay_embedding(segment, delay, dim)
rips = gd.RipsComplex(points=cloud).create_simplex_tree(max_dimension=2)
rips.persistence()
h0 = rips.persistence_intervals_in_dimension(0)
h1 = rips.persistence_intervals_in_dimension(1)
h0_vals = replace_inf(h0)
h1_vals = replace_inf(h1)
row = [
len(h0_vals), np.mean(h0_vals) if h0_vals else 0,
persistent_entropy([(0, p) for p in h0_vals]),
l_norm([(0, p) for p in h0_vals], p=1),
l_norm([(0, p) for p in h0_vals], p=2),
len(h1_vals), np.mean(h1_vals) if h1_vals else 0,
l_norm([(0, p) for p in h1_vals], p=1),
l_norm([(0, p) for p in h1_vals], p=2)
]
lags = [series[i + win - j] for j in range(1, 11)]
data.append(row + lags + [series[i + win]])
return np.array(data)
# Reshape for LSTM
X = features[:, :-1]
y = features[:, -1]
X_scaled = MinMaxScaler().fit_transform(X)
y_scaled = MinMaxScaler().fit_transform(y.reshape(-1, 1))
X_train = X_scaled[train_mask]
X_val = X_scaled[val_mask]
X_train = X_train.reshape((X_train.shape[0], 1, X_train.shape[1]))
X_val = X_val.reshape((X_val.shape[0], 1, X_val.shape[1]))
# LSTM model
model = Sequential([
LSTM(64, return_sequences=True, input_shape=(1, X_train.shape[2])),
Dropout(0.2),
LSTM(32),
Dropout(0.2),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
model.fit(X_train, y_train, validation_data=(X_val, y_val),
epochs=100, batch_size=16, callbacks=[EarlyStopping(patience=10)])```
Подробнее здесь: https://stackoverflow.com/questions/796 ... to-predict
Действительно ли объединить отстающие и топологические (TDA) функции в LSTM, чтобы предсказать следующее время во времен ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Предсказать следующее слово в Интернете или мобильном приложении? [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-