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