Este módulo en Python permite generar pronósticos de ventas por categoría y por producto a partir de datos históricos semanales. Utiliza Prophet para generar predicciones robustas, incluso ante datos ruidosos o escasos.
- Pronóstico de ventas por categoría (
generate_category_forecasts) - Pronóstico de ventas por producto (
generate_product_forecasts) - Detección de predicciones inestables
- Fallback inteligente cuando los datos son insuficientes
.
├── scripts/
│ └── generate_forecasts.py # Script principal
├── predictor.py # Funciones de predicción con Prophet
├── data_utils.py # Utilidades para obtener y limpiar datos (no incluido aquí)
├── cache/
│ ├── categories_forecast.json # Salida: pronóstico por categorías
│ └── products_forecast.json # Salida: pronóstico por productos
python scripts/generate_forecasts.pyEsto generará dos archivos en cache/:
categories_forecast.jsonproducts_forecast.json
Cada uno incluye:
[
{
"category": "nombre_categoria",
"history": [ { "date": "YYYY-MM-DD", "value": N }, ... ],
"forecasting": [ { "date": "YYYY-MM-DD", "value": M }, ... ],
"weeks": 4
}
]- Python ≥ 3.9
prophetpandasnumpy
Instalación:
pip install prophet pandas numpyContiene funciones:
prepare_category_dfyprepare_product_df: Preprocesamiento conlog1ppara estabilizar varianza.predict_category_sales: EntrenaProphet, agrega estacionalidad mensual y aplica ruido leve.predict_product_sales: Similar al anterior, ajustado a productos.es_forecast_inestable: Detecta pronósticos sospechosos, activa fallback si es necesario.
- Si hay menos de 6 semanas con ventas > 0:
- Usa la media como base.
- Agrega ruido aleatorio leve (±10%).
- Predicciones para las próximas 4 semanas (
WEEKS = 4) - Escala original de ventas (enteros, revertido de
log1p) - Pronósticos más suaves y confiables en entornos ruidosos
from scripts.generate_forecasts import generate_category_forecasts, generate_product_forecasts
generate_category_forecasts()
generate_product_forecasts()- Se asume que
data_utils.pyproporciona funciones:get_and_clean_category_data()get_and_clean_product_data(product_id)get_all_products()
- El formato de fecha de salida es
YYYY-MM-DD. - Las predicciones comienzan a partir del próximo lunes (
W-MON).