и посмотреть медиа
Análisis de datos - DA SQL
и посмотреть медиа
Análisis de datos: SQL, Python.
Análisis de datos: SQL, Python.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Acerca del análisis de datos: bases de datos, SQL, Python y más para analistas.
Как спрогнозировать сезонные данные на Python Представим, что у нас есть временной ряд (например, продажи). И нужно понять, какая часть колебаний - это регулярный сезонный паттерн, а какая - тренд и "чистое" изменение показателя без сезонного шума. ❗️Так как тема достаточно объемная, код будет написан не весь, а только самые важные моменты. Считаю важным рассказать именно про логику и последовательность. 🟠Итак, для этих целей есть 2 вида моделей: ▶️Аддитивная модель используется тогда, когда амплитуда сезонных колебаний постоянна и не зависит от уровня ряда (например, каждый декабрь +500 продаж сверх тренда, всегда +500, вне зависимости от того, растёт бизнес или нет). ▶️Мультипликативная модель используется тогда, когда амплитуда колебаний растёт вместе с уровнем ряда (например, декабрь даёт +20% к тренду, и если тренд вырос, абсолютная прибавка тоже растёт). 🟠В реальных бизнес-данных мультипликативная модель встречается чаще, потому что рост бизнеса обычно масштабирует и сезонные всплески. Её мы и обсудим. 1️⃣Первым делом импортируем библиотеки и подготавливаем данные: from statsmodels.tsa.seasonal import seasonal_decompose from sklearn.linear_model import LinearRegression import numpy as np import pandas as pd df = df.set_index('date').asfreq('MS') Пропущенные месяцы нужно заполнить. Это критично, потому что без этого модель может сломаться. 2️⃣Затем подготовленные данные прогоним через встроенную функцию seasonal_decompose. В качестве аргументов выбирается имеющийся временной ряд, тип модели 👆и разбивка на 12 периодов (по месяцам): result = seasonal_decompose(y, model='multiplicative', period=12) seasonal = result.seasonal deseasonalized = y / seasonal Это нужно для того, чтобы убрать из данных сезонность. Для этого ряд делится на полученный из seasonal_decompose сезонный коэффициент. В результате получатся "чистые" данные, которые уже можно использовать для построения прогноза. 3️⃣Потом строится линейная регрессия на основе полученных ранее десезонализированных данных: model = LinearRegression() model.fit(X, Y) trend_forecast = model.predict(X_future) По факту это будет уже готовый прогноз на основе нашего ряда, только без фактора сезонности. 4️⃣Для того, чтобы прогноз получился наиболее полным, логичный шаг - вернуть в прогноз временно убранную сезонность: seasonal_by_month = seasonal.groupby(seasonal.index.month).mean() seasonal_forecast = future_dates.month.map(seasonal_by_month).values forecast = trend_forecast * seasonal_forecast Для этого нужно просто спрогнозированный тренд умножить на сезонный коэффициент. В итоге получим готовый прогноз, но без проверки этого прогноза на точность. Но это уже отдельная история.
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!