CoolFace
Apppublic

mnds18/agentic-ts-forecasting-system

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
data_scientist_agent.py56 linesDownload Raw Back to agents
1"""2data_scientist_agent.py3Data Scientist Agent to train and compare multiple forecasting models4"""5 6import pandas as pd7from prophet import Prophet8from sklearn.metrics import mean_absolute_error, mean_squared_error9import numpy as np10import os11 12from agents.orchestration_agent import agent_logger13 14import pandas as pd15from prophet import Prophet16from sklearn.metrics import mean_absolute_error, mean_squared_error17import numpy as np18 19@agent_logger("Data Scientist", "Model Training")20def run_model_training():21    os.makedirs("data", exist_ok=True)22    os.makedirs("outputs", exist_ok=True)23 24    # Load the data25    df = pd.read_csv("data/daily_sales.csv")26 27    # Fit the Prophet model28    model = Prophet()29    model.fit(df)30 31    # Make future dataframe32    future = model.make_future_dataframe(periods=30)33    forecast = model.predict(future)34 35    # Save forecast to CSV36    forecast[['ds', 'yhat']].to_csv("data/forecast.csv", index=False)37 38    # Ensure 'ds' is datetime in both DataFrames before merging39    df["ds"] = pd.to_datetime(df["ds"])40    forecast["ds"] = pd.to_datetime(forecast["ds"])    41 42    # Calculate and save metrics only on the available data43    df_merged = df.merge(forecast[['ds', 'yhat']], on='ds', how='inner')44    mae = mean_absolute_error(df_merged['y'], df_merged['yhat'])45    rmse = np.sqrt(mean_squared_error(df_merged['y'], df_merged['yhat']))46    mape = np.mean(np.abs((df_merged['y'] - df_merged['yhat']) / df_merged['y'])) * 10047 48    metrics = pd.DataFrame({49        "Model": ["Prophet"],50        "MAE": [mae],51        "RMSE": [rmse],52        "MAPE": [mape]53    })54 55    metrics.to_csv("outputs/model_report.csv", index=False)56    return forecast[['ds', 'yhat']]