# arima_forecast.py import pandas as pd from statsmodels.tsa.arima.model import ARIMAResults from sklearn.metrics import mean_absolute_percentage_error def load_model(path="best_arima_model.pkl"): return ARIMAResults.load(path) def load_timeseries(df, comm_code): monthly_cols = [col for col in df.columns if col.startswith('INDX')] df_filtered = df[df['COMM_CODE'] == comm_code] ts_values = df_filtered[monthly_cols].values.flatten() ts = pd.Series(ts_values, index=pd.date_range(start='2012-04-01', periods=len(monthly_cols), freq='MS')) return ts def forecast(comm_code, forecast_months=6, csv_path="data.csv"): df = pd.read_csv(csv_path) ts = load_timeseries(df, comm_code) train = ts[:-forecast_months] test = ts[-forecast_months:] model = load_model() forecast = model.forecast(steps=forecast_months) forecast.index = test.index mape = mean_absolute_percentage_error(test, forecast) return forecast, test, mape