Попередня Обробка Часових Рядів
Свайпніть щоб показати меню
Висвітлено ключові етапи попередньої обробки часових рядів для проєкту прогнозування. Попередня обробка гарантує, що дані є чистими, структурованими та готовими до навчання моделі. Розглядаються такі теми, як масштабування ознак, розділення на навчальну та тестову вибірки та створення послідовностей — усі вони є необхідними для ефективної підготовки даних.
- Масштабування ознак: масштабування ознак важливе для того, щоб усі вхідні ознаки були на подібному масштабі. Це допомагає моделям, таким як LSTM та ARIMA, швидше сходитися та підвищує їхню ефективність. Поширені методи масштабування ознак включають масштабування мінімум-максимум та стандартизацію (z-score нормалізація). Масштабування допомагає моделі зосередитися на взаємозв'язках у даних, а не бути упередженою через ознаки з більшими діапазонами;
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_train_data = scaler.fit_transform(train_data_raw)
scaled_test_data = scaler.transform(test_data_raw)
- Розділення на навчальну та тестову вибірки: розділення набору даних на навчальну та тестову підвибірки є необхідним для оцінки ефективності моделі. Зазвичай набір даних часових рядів розділяється хронологічно: перша частина даних використовується для навчання, а пізніша — для тестування. Це гарантує, що модель оцінюється на даних, які вона раніше не бачила, і імітує реальні сценарії прогнозування. Поширене співвідношення — 80% для навчання та 20% для тестування, але воно може змінюватися залежно від розміру та характеристик даних;
train_split_ratio = 0.8
train_size = int(len(price_data) * train_split_ratio)
train_data_raw = price_data[:train_size]
test_data_raw = price_data[train_size:]
- Створення послідовностей: у прогнозуванні часових рядів, особливо при використанні моделей типу LSTM, дані потрібно трансформувати у формат послідовностей. Етап створення послідовностей полягає у формуванні пар вхід-вихід, де кожен вхід відповідає послідовності попередніх спостережень, а вихід — це прогнозоване значення для наступного кроку. Це важливо для того, щоб моделі могли навчатися на попередніх кроках і робити точні прогнози на майбутнє.
def create_sequences(data, seq_length):
xs = []
ys = []
for i in range(len(data) - seq_length):
x = data[i:(i + seq_length)]
y = data[i + seq_length]
xs.append(x)
ys.append(y)
# Ensure numpy arrays are returned, helps with tensor conversion later
return np.array(xs), np.array(ys)
Підсумовуючи, попередня обробка є важливим етапом у прогнозуванні часових рядів. Масштабуючи ознаки, розділяючи дані для навчання і тестування та створюючи послідовності для введення в модель, ми забезпечуємо якісну підготовку даних для точного та ефективного прогнозування.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат