def __init__(self, time_series, baseline_time_series, percent_threshold_upper=None, percent_threshold_lower=None, offset=0.0, scan_window=None, confidence=0.01): """ :param time_series: current time series :param baseline_time_series: baseline time series :param percent_threshold_upper: If time_series is larger than baseline_time_series by this percent, then its a candidate for an anomaly :param percent_threshold_lower: If time_series is smaller than baseline_time_series by this percent, then its a candidate for an anomaly. Percent_threshold_lower should be a negative number to work as intended. :param offset: baseline will be adjusted by this amount prior to computing percentage TimeSeries > offset + (1 + percent_threshold_upper/100) * Baseline or for lower value TimeSeries < offset + (1 + percent_threshold_lower/100) * Baseline :param scan_window: number of data points to evaluate for anomalies default of 24 = 5 minute period for 2 hours :param confidence: Confidence to use for determining anomaly, default is 0.01 :return: """ super(SignTest, self).__init__(self.__class__.__name__, time_series, baseline_time_series) if percent_threshold_upper is None and percent_threshold_lower is None: raise exceptions.RequiredParametersNotPassed( 'luminol.algorithms.anomaly_detector_algorithms.sign_test: \ Either percent_threshold_upper or percent_threshold_lower is needed' ) if percent_threshold_upper is not None and percent_threshold_lower is not None: raise exceptions.RequiredParametersNotPassed( 'luminol.algorithms.anomaly_detector_algorithms.sign_test: ' + 'Cannot specify both percent_threshold_upper and percent_threshold_lower' ) if not scan_window: raise exceptions.RequiredParametersNotPassed( 'luminol.algorithms.anomaly_detector_algorithms.sign_test: ' + ' scan window size needs to be specified') # make assignements self.scan_window = scan_window self.confidence = confidence self.offset = offset self.percent_threshold = percent_threshold_upper if percent_threshold_upper is not None else percent_threshold_lower # scale will transform the time series and baseline # if we are detecting lower threshold we mirror the data self.scale = 1 if percent_threshold_upper is not None else -1
def __init__(self, time_series, baseline_time_series, percent_threshold_upper=None, percent_threshold_lower=None): """ :param time_series: current time series :param baseline_time_series: baseline time series :param percent_threshold_upper: If time_series is larger than baseline_time_series by this percent, then its an anomaly :param percent_threshold_lower: If time_series is smaller than baseline_time_series by this percent, then its an anomaly """ super(DiffPercentThreshold, self).__init__(self.__class__.__name__, time_series, baseline_time_series) self.percent_threshold_upper = percent_threshold_upper self.percent_threshold_lower = percent_threshold_lower if not self.percent_threshold_upper and not self.percent_threshold_lower: raise exceptions.RequiredParametersNotPassed( 'luminol.algorithms.anomaly_detector_algorithms.diff_percent_threshold: ' + 'Either percent_threshold_upper or percent_threshold_lower needed')
def __init__(self, time_series, absolute_threshold_value_upper=None, absolute_threshold_value_lower=None, baseline_time_series=None): """ Initialize algorithm, check all required args are present :param time_series: The current time series dict to run anomaly detection on :param absolute_threshold_value_upper: Time series values above this are considered anomalies :param absolute_threshold_value_lower: Time series values below this are considered anomalies :param baseline_time_series: A no-op for now :return: """ super(AbsoluteThreshold, self).__init__(self.__class__.__name__, time_series, baseline_time_series) self.absolute_threshold_value_upper = absolute_threshold_value_upper self.absolute_threshold_value_lower = absolute_threshold_value_lower if not self.absolute_threshold_value_lower and not self.absolute_threshold_value_upper: raise exceptions.RequiredParametersNotPassed('luminol.algorithms.anomaly_detector_algorithms.absolute_threshold: ' 'Either absolute_threshold_value_upper or ' 'absolute_threshold_value_lower needed')