Попередня Обробка Даних Часових Рядів
Свайпніть щоб показати меню
Висвітлено ключові етапи попередньої обробки даних часових рядів для проєкту прогнозування. Попередня обробка забезпечує чистоту, структурованість даних і готовність до навчання моделі. Розглядаються такі теми, як масштабування ознак, розділення на навчальну і тестову вибірки та створення послідовностей — усі вони є необхідними для ефективної підготовки даних.
- Масштабування ознак: масштабування ознак важливе для того, щоб усі вхідні ознаки були в одному діапазоні. Це допомагає моделям, таким як 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)
Підсумовуючи, попередня обробка є важливим етапом у прогнозуванні часових рядів. Масштабування ознак, розділення даних для навчання і тестування та створення послідовностей для подачі в модель забезпечують якісну підготовку даних для точного й ефективного прогнозування.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат