fetch-rewards-app / model.py
Sagar Thacker
adding files
22fca73
raw
history blame
1.16 kB
import pickle
import pandas as pd
import numpy as np
class PredictionModel:
def __init__(self, model_path, data_path):
self.model_path = model_path
self.data_path = data_path
self.load_model()
self.load_data()
def load_model(self):
with open(self.model_path, 'rb') as f:
self.model = pickle.load(f)
def load_data(self):
self.df = pd.read_csv(self.data_path)
self.df.columns = ['date', 'receipt_count']
def predict(self, period, alpha=0.05):
yhat = self.model.forecast(period)
intervals = self.compute_confidence_intervals(alpha, yhat)
return yhat, intervals
def compute_confidence_intervals(self, alpha, yhat):
residuals = self.df.receipt_count - self.model.fittedvalues
z = abs(np.percentile(np.random.standard_normal(10000), [100 * alpha/2, 100 * (1 - alpha/2)]))
std_residual = residuals.std()
interval_upper = yhat + z[1] * std_residual * np.sqrt(1 + 1/len(self.df))
interval_lower = yhat - z[1] * std_residual * np.sqrt(1 + 1/len(self.df))
return [interval_lower, interval_upper]