ML-Lab / arima_forecast.py
iamomtiwari's picture
Create arima_forecast.py
03804e1 verified
# 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