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