def testAnomalyCumulative(self): """Test cumulative anomaly scores.""" anomalyComputer = anomaly.Anomaly(slidingWindowSize=3) predicted = (array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6]), array([1, 2, 6])) actual = (array([1, 2, 6]), array([1, 2, 6]), array([1, 4, 6]), array([10, 11, 6]), array([10, 11, 12]), array([10, 11, 12]), array([10, 11, 12]), array([1, 2, 6]), array([1, 2, 6])) anomalyExpected = (0.0, 0.0, 1.0/9.0, 3.0/9.0, 2.0/3.0, 8.0/9.0, 1.0, 2.0/3.0, 1.0/3.0) for act, pred, expected in zip(actual, predicted, anomalyExpected): score = anomalyComputer.compute(act, pred) self.assertAlmostEqual( score, expected, places=5, msg="Anomaly score of %f doesn't match expected of %f" % ( score, expected))
def testComputeAnomalyScorePartialMatch(self): anomalyComputer = anomaly.Anomaly() score = anomalyComputer.compute(array([2, 3, 6]), array([3, 5, 7])) self.assertAlmostEqual(score, 2.0 / 3.0)
def testComputeAnomalyScoreNoMatch(self): anomalyComputer = anomaly.Anomaly() score = anomalyComputer.compute(array([2, 4, 6]), array([3, 5, 7])) self.assertAlmostEqual(score, 1.0)
def testComputeAnomalyScorePerfectMatch(self): anomalyComputer = anomaly.Anomaly() score = anomalyComputer.compute(array([3, 5, 7]), array([3, 5, 7])) self.assertAlmostEqual(score, 0.0)
def testComputeAnomalyScoreNoActive(self): anomalyComputer = anomaly.Anomaly() score = anomalyComputer.compute(array([]), array([3, 5])) self.assertAlmostEqual(score, 0.0)
def testComputeAnomalySelectModePure(self): anomalyComputer = anomaly.Anomaly(mode=anomaly.Anomaly.MODE_PURE) score = anomalyComputer.compute(array([2, 3, 6]), array([3, 5, 7])) self.assertAlmostEqual(score, 2.0 / 3.0)