Exemplo n.º 1
0
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))
Exemplo n.º 2
0
    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)