Должен ли я выполнять стационарное вейвлет-преобразование отдельно для наборов для обучения, проверки и тестирования?
У меня есть данные массива временных рядов с 10000 выборок. Я разделил данные на обучающие, проверяющие и проверяющие массивы следующим образом:
import numpy as np
import pywt
data = np.random.rand(10000,)
train = data[:8000]
validate = data[8000:9000]
test = data[9000:]
Я хочу реализовать эту статью. Автор статьи говорит:
Исходные данные были разложены на серию деталей (DW) с использованием модифицированной версии сложного DWT (чтобы будущие значения данных не использовались при расчете).
2 вопроса:
1) Что он имеет в виду, когда говорит: чтобы будущие значения данных не использовались при расчете? Имеет ли он в виду, что мы должны попытаться выполнить SWT на тренировке, проверять и тестировать наборы отдельно, точно так же, как указано ниже?
[(cA_train,cD_train)] = pywt.swt(train, wavelet='db4', level=1)
[(cA_validate,cD_validate)] = pywt.swt(validate, wavelet='db4', level=1)
[(cA_test,cD_test)] = pywt.swt(test, wavelet='db4', level=1)
2) Это неправильно, если я выполняю SWT на всех данных, как показано ниже, а затем делю их на тренировку, проверку и тестирование?
[(cA_data,cD_data)] = pywt.swt(data, wavelet='db4', level=1)