def RunDetection(TS_ID): #Get Data dfds = d.GetTimeSeries(TS_ID) targets = dfds['target'].unique() #Delete Output Data for TS_ID d._deleteTimeSeriesOutput(TS_ID) #Run detection for target in targets: try: titleName = TS_ID + '_' + target df = dfds[dfds['target'] == target] print(target) #Change Detection detector = ADetector(df) detector.Run() dfResults = detector.GetResults() dfResults['ts_id'] = TS_ID dfResults['target'] = target d.SaveResults(dfResults) visuals = Visualizer(dfResults, plt_ymin=min(df.y), plt_ymax=max(df.y)) visuals.PlotChangePoints(Title=titleName, fileName=titleName) except Exception as ex: print("Error with {0}".format(TS_ID + " - " + target))
def RunBackpropagation(self, minPeriods=30, chartTitle="Trend", metric='AlgoOutlierDetected'): AS_OF_DATES = self.df['ds'].unique() for i, toDate in enumerate(AS_OF_DATES): print(toDate) dfSource = self.df[self.df['ds'] <= toDate] #need at least 10 records to run model if dfSource.shape[0] > minPeriods: detector = ADetector(dfSource) detector.Run() dfResults = detector.GetResults() dfResults['AsOfDate'] = toDate #Prepare for Visualization (including future dates with 0's) xDates = self.df['ds'].values y = list(dfResults['y'].values) changepointChanges = list(dfResults[metric].values) while len(y) < len(xDates): y.append(0) changepointChanges.append(0) d = {'ds': xDates, 'y': y, metric: changepointChanges} dfResultsCharting = pd.DataFrame(d) #Save Image visuals = Visualizer(dfResultsCharting, plt_ymin=min(self.df.y), plt_ymax=max(self.df.y)) visuals.PlotChangePoints(Title=chartTitle, fileName=str(i), folderName="seqimg", metric=metric)