in assets/functions/batch_anomaly_detection/app.py [0:0]
def fit_predict_model(meter, timeseries):
m = Prophet(daily_seasonality = False, yearly_seasonality = True, weekly_seasonality = True,
seasonality_mode = 'multiplicative',
interval_width = .98,
changepoint_range = .8)
m.add_country_holidays(country_name='UK')
m.add_regressor('weekend')
m = m.fit(timeseries)
forecast = m.predict(timeseries)
forecast['consumption'] = timeseries['y'].reset_index(drop = True)
forecast['meter_id'] = meter
forecast['anomaly'] = 0
forecast.loc[forecast['consumption'] > forecast['yhat_upper'], 'anomaly'] = 1
forecast.loc[forecast['consumption'] < forecast['yhat_lower'], 'anomaly'] = -1
#anomaly importances
forecast['importance'] = 0
forecast.loc[forecast['anomaly'] ==1, 'importance'] = \
(forecast['consumption'] - forecast['yhat_upper'])/forecast['consumption']
forecast.loc[forecast['anomaly'] ==-1, 'importance'] = \
(forecast['yhat_lower'] - forecast['consumption'])/forecast['consumption']
return forecast