Пример #1
0
    def test_detect(self):
        eword_size = 2
        ewindow_factor = 2
        elead_window_factor = 2
        elag_window_factor = 2

        inst = AssumptionFreeAA(word_size=eword_size,
                                window_factor=ewindow_factor,
                                lead_window_factor=elead_window_factor,
                                lag_window_factor=elag_window_factor)

        data = np.array([1, 2, 2, 2, 4, 7, 8, 9, 1, 9, 5, 6, 7, 3, 2, 6])
        escore = 0.125
        ebitmp1 = np.array([[0.,  0.,  0.,  0.],
                            [0.,  0.,  1.,  0.],
                            [0.,  1.,  0.,  0.],
                            [0.,  0.,  0.,  0.]])
        ebitmp2 = np.array([[0.,  0.,  0.,  1.],
                            [0.,  0.,  1.,  0.],
                            [0.,  0.,  0.,  0.],
                            [0.,  0.,  0.,  0.]])
        actual = inst.detect(data)[0]
        self.assertEqual(escore, actual.score,
                         'exp: %s; act: %s' % (escore, actual.score))
        self.assertItemsEqual(ebitmp1[0], actual.bitmp1[0],
                         'exp: %s; act: %s' % (ebitmp1[0], actual.bitmp1[0]))
        self.assertItemsEqual(ebitmp1[1], actual.bitmp1[1],
                         'exp: %s; act: %s' % (ebitmp1[1], actual.bitmp1[1]))
        self.assertItemsEqual(ebitmp2[0], actual.bitmp2[0],
                         'exp: %s; act: %s' % (ebitmp2[0], actual.bitmp2[0]))
        self.assertItemsEqual(ebitmp2[1], actual.bitmp2[1],
                         'exp: %s; act: %s' % (ebitmp2[1], actual.bitmp2[1]))
    def test_detect(self):
        eword_size = 2
        ewindow_factor = 2
        elead_window_factor = 2
        elag_window_factor = 2

        inst = AssumptionFreeAA(word_size=eword_size,
                                window_factor=ewindow_factor,
                                lead_window_factor=elead_window_factor,
                                lag_window_factor=elag_window_factor)

        data = np.array([1, 2, 2, 2, 4, 7, 8, 9, 1, 9, 5, 6, 7, 3, 2, 6])
        escore = 0.125
        ebitmp1 = np.array([[0., 0., 0., 0.], [0., 0., 1., 0.],
                            [0., 1., 0., 0.], [0., 0., 0., 0.]])
        ebitmp2 = np.array([[0., 0., 0., 1.], [0., 0., 1., 0.],
                            [0., 0., 0., 0.], [0., 0., 0., 0.]])
        actual = inst.detect(data)[0]
        self.assertEqual(escore, actual.score,
                         'exp: %s; act: %s' % (escore, actual.score))
        self.assertItemsEqual(
            ebitmp1[0], actual.bitmp1[0],
            'exp: %s; act: %s' % (ebitmp1[0], actual.bitmp1[0]))
        self.assertItemsEqual(
            ebitmp1[1], actual.bitmp1[1],
            'exp: %s; act: %s' % (ebitmp1[1], actual.bitmp1[1]))
        self.assertItemsEqual(
            ebitmp2[0], actual.bitmp2[0],
            'exp: %s; act: %s' % (ebitmp2[0], actual.bitmp2[0]))
        self.assertItemsEqual(
            ebitmp2[1], actual.bitmp2[1],
            'exp: %s; act: %s' % (ebitmp2[1], actual.bitmp2[1]))
    def test_detect_not_enough_elements(self):
        eword_size = 2
        ewindow_factor = 2
        elead_window_factor = 2
        elag_window_factor = 2

        inst = AssumptionFreeAA(word_size=eword_size,
                                window_factor=ewindow_factor,
                                lead_window_factor=elead_window_factor,
                                lag_window_factor=elag_window_factor)

        data = np.array([1, 2, 2, 2, 4, 7, 8, 9, 1, 9])
        elen_score = 0
        actual = inst.detect(data)
        self.assertEqual(elen_score, len(actual),
                         'exp: %s; act: %s' % (elen_score, len(actual)))
Пример #4
0
 def test_build_combinations(self):
     data = 'abcd'
     expected = set(['aa', 'ab', 'ac', 'ad', 'ba', 'bb', 'bc', 'bd',
                     'ca', 'cb', 'cc', 'cd', 'da', 'db', 'dc', 'dd'])
     actual = AssumptionFreeAA.build_combinations(data)
     self.assertSetEqual(expected, actual,
                         'exp: %s; act: %s' % (expected, actual))
Пример #5
0
 def test_dist_equal(self):
     mtrx_a = np.array(range(10))
     mtrx_b = np.array(range(10))
     expected = 0
     actual = AssumptionFreeAA.dist(mtrx_a, mtrx_b)
     self.assertEqual(expected, actual,
                      'exp: %s; act: %s' % (expected, actual))
 def test_dist_equal(self):
     mtrx_a = np.array(range(10))
     mtrx_b = np.array(range(10))
     expected = 0
     actual = AssumptionFreeAA.dist(mtrx_a, mtrx_b)
     self.assertEqual(expected, actual,
                      'exp: %s; act: %s' % (expected, actual))
Пример #7
0
    def test_detect_not_enough_elements(self):
        eword_size = 2
        ewindow_factor = 2
        elead_window_factor = 2
        elag_window_factor = 2

        inst = AssumptionFreeAA(word_size=eword_size,
                                window_factor=ewindow_factor,
                                lead_window_factor=elead_window_factor,
                                lag_window_factor=elag_window_factor)

        data = np.array([1, 2, 2, 2, 4, 7, 8, 9, 1, 9])
        elen_score = 0
        actual = inst.detect(data)
        self.assertEqual(elen_score, len(actual),
                         'exp: %s; act: %s' % (elen_score, len(actual)))
 def test_build_bitmap_null_map_norm_factor_null(self):
     data = {
         'aa': 0,
         'ab': 0,
         'ac': 0,
         'ad': 0,
         'ba': 0,
         'bb': 0,
         'bc': 0,
         'bd': 0,
         'ca': 0,
         'cb': 0,
         'cc': 0,
         'cd': 0,
         'da': 0,
         'db': 0,
         'dc': 0,
         'dd': 0
     }
     norm_factor = 0
     expected = np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],
                          [0, 0, 0, 0]])
     actual = AssumptionFreeAA.build_bitmap(data, norm_factor)
     self.assertItemsEqual(expected.flatten(), actual.flatten(),
                           'exp: %s; act: %s' % (expected, actual))
 def test_get_words(self):
     data = np.array([range(20)] * 100).flatten()
     feature_size = 20
     word_size = 10
     expected = ['aaabbccddd'] * 100
     actual = AssumptionFreeAA.get_words(data, feature_size, word_size)
     self.assertItemsEqual(expected, actual,
                           'exp: %s;\nact: %s' % (expected, actual))
Пример #10
0
 def test_get_words(self):
     data = np.array([range(20)] * 100).flatten()
     feature_size = 20
     word_size = 10
     expected = ['aaabbccddd'] * 100
     actual = AssumptionFreeAA.get_words(data, feature_size, word_size)
     self.assertItemsEqual(expected, actual,
                           'exp: %s;\nact: %s' % (expected, actual))
Пример #11
0
 def test_build_combinations(self):
     data = 'abcd'
     expected = set([
         'aa', 'ab', 'ac', 'ad', 'ba', 'bb', 'bc', 'bd', 'ca', 'cb', 'cc',
         'cd', 'da', 'db', 'dc', 'dd'
     ])
     actual = AssumptionFreeAA.build_combinations(data)
     self.assertSetEqual(expected, actual,
                         'exp: %s; act: %s' % (expected, actual))
Пример #12
0
 def test_count_frequencies(self):
     data = ['aabbaaacc', 'aadaaaccc']
     alphabet = 'abcd'
     expected = {'aa': 6, 'ab': 1, 'ac': 2, 'ad': 1,
                 'ba': 1, 'bb': 1, 'bc': 0, 'bd': 0,
                 'ca': 0, 'cb': 0, 'cc': 3, 'cd': 0,
                 'da': 1, 'db': 0, 'dc': 0, 'dd': 0}
     actual = AssumptionFreeAA.count_frequencies(data, alphabet)
     self.assertDictEqual(expected, actual,
                          'exp: %s; act: %s' % (expected, actual))
 def setUp(self,
           window_size=1000, lead_window_factor=3,
           lag_window_factor=30, word_size=10,
           recursion_level=2, resampling_rate='10ms',
           resampling_method='mean'):
     """
     Copies the data set to an test's instance variable
     and instantiates an anomaly detector.
     """
     self._data = self._df.resample(rule=resampling_rate,
                                   how=resampling_method)
     # fill NAs forward
     self._data = self._data.fillna(method='ffill')
     # fill NAs backwards (fill any NAs at the start of all series)
     self._data = self._data.fillna(method='bfill')
     self._instance = AssumptionFreeAA(window_size=window_size,
                                      lead_window_factor=lead_window_factor,
                                      lag_window_factor=lag_window_factor,
                                      word_size=word_size,
                                      recursion_level=recursion_level)
class AssumptionFreeDataTests():
    @classmethod
    def setUpClass(cls):
        """
        Reads a test data set into memory
        """
        dirname = os.path.dirname(__file__)
        filename = os.path.join(dirname, 'dataset.dat')
        cls._df = extract_hr_acc(read_data(filename))

    def setUp(self,
              window_size=1000, lead_window_factor=3,
              lag_window_factor=30, word_size=10,
              recursion_level=2, resampling_rate='10ms',
              resampling_method='mean'):
        """
        Copies the data set to an test's instance variable
        and instantiates an anomaly detector.
        """
        self._data = self._df.resample(rule=resampling_rate,
                                      how=resampling_method)
        # fill NAs forward
        self._data = self._data.fillna(method='ffill')
        # fill NAs backwards (fill any NAs at the start of all series)
        self._data = self._data.fillna(method='bfill')
        self._instance = AssumptionFreeAA(window_size=window_size,
                                         lead_window_factor=lead_window_factor,
                                         lag_window_factor=lag_window_factor,
                                         word_size=word_size,
                                         recursion_level=recursion_level)

    def tearDown(self):
        """
        Deletes instance's data.
        """
        del self._data
        del self._instance
        gc.collect()

    def runTest(self):
        self._scores = []
        self._bitmaps = []
        for i in xrange(len(self._data)):
            if np.isnan(self._data.ratio[i]):
                print self._data.ix[i]
                sys.exit()
            result = self._instance.detect([self._data.ratio[i]])
            if len(result) != 0:
                self._scores.append(result[0].score)
                self._bitmaps.append((result[0].bitmp1, result[0].bitmp2))
            else:
                self._scores.append(0.)
                self._bitmaps.append(([], []))
Пример #15
0
 def test_build_bitmap_null_map_norm_factor_null(self):
     data = {'aa': 0, 'ab': 0, 'ac': 0, 'ad': 0,
             'ba': 0, 'bb': 0, 'bc': 0, 'bd': 0,
             'ca': 0, 'cb': 0, 'cc': 0, 'cd': 0,
             'da': 0, 'db': 0, 'dc': 0, 'dd': 0}
     norm_factor = 0
     expected = np.array([[0, 0, 0, 0],
                          [0, 0, 0, 0],
                          [0, 0, 0, 0],
                          [0, 0, 0, 0]])
     actual = AssumptionFreeAA.build_bitmap(data, norm_factor)
     self.assertItemsEqual(expected.flatten(), actual.flatten(),
                          'exp: %s; act: %s' % (expected, actual))
Пример #16
0
    def test_init(self):
        eword_size = 10
        ewindow_factor = 100
        elead_window_factor = 3
        elag_window_factor = 30
        ewindow_size = ewindow_factor * eword_size
        elead_window_size = elead_window_factor * ewindow_size
        elag_window_size = elag_window_factor * ewindow_size
        euniverse_size = elead_window_size + elag_window_size

        inst = AssumptionFreeAA(word_size=eword_size,
                                window_factor=ewindow_factor,
                                lead_window_factor=elead_window_factor,
                                lag_window_factor=elag_window_factor)

        self.assertEqual(eword_size, inst._word_size)
        self.assertEqual(ewindow_size, inst._window_size)
        self.assertEqual(euniverse_size, inst.universe_size)
        self.assertEqual(elead_window_size, inst._lead_window.maxlen)
        self.assertEqual(elag_window_size, inst._lag_window.maxlen)
        self.assertEqual(elag_window_size, inst._lag_window.maxlen)
Пример #17
0
 def test_count_frequencies(self):
     data = ['aabbaaacc', 'aadaaaccc']
     alphabet = 'abcd'
     expected = {
         'aa': 6,
         'ab': 1,
         'ac': 2,
         'ad': 1,
         'ba': 1,
         'bb': 1,
         'bc': 0,
         'bd': 0,
         'ca': 0,
         'cb': 0,
         'cc': 3,
         'cd': 0,
         'da': 1,
         'db': 0,
         'dc': 0,
         'dd': 0
     }
     actual = AssumptionFreeAA.count_frequencies(data, alphabet)
     self.assertDictEqual(expected, actual,
                          'exp: %s; act: %s' % (expected, actual))
Пример #18
0
 def test_count_substr(self):
     data = 'aabaaacaadaaa'
     expected = 6
     actual = AssumptionFreeAA.count_substr(data, 'aa')
     self.assertEqual(expected, actual,
                      'exp: %s; act: %s' % (expected, actual))
Пример #19
0
 def test_sax(self):
     data = np.array(range(10))
     expected = 'aaabbccddd'
     actual = AssumptionFreeAA.sax(data)
     self.assertItemsEqual(expected, actual,
                           'exp: %s; act: %s' % (expected, actual))
Пример #20
0
 def test_sax_std0(self):
     data = np.array([1] * 10)
     expected = 'cccccccccc'
     actual = AssumptionFreeAA.sax(data)
     self.assertItemsEqual(expected, actual,
                           'exp: %s; act: %s' % (expected, actual))
Пример #21
0
 def test_sax_std0(self):
     data = np.array([1] * 10)
     expected = 'cccccccccc'
     actual = AssumptionFreeAA.sax(data)
     self.assertItemsEqual(expected, actual,
                           'exp: %s; act: %s' % (expected, actual))
Пример #22
0
 def test_sax(self):
     data = np.array(range(10))
     expected = 'aaabbccddd'
     actual = AssumptionFreeAA.sax(data)
     self.assertItemsEqual(expected, actual,
                           'exp: %s; act: %s' % (expected, actual))
Пример #23
0
 def test_count_substr1(self):
     data = 'abacadaa'
     expected = 1
     actual = AssumptionFreeAA.count_substr(data, 'aa')
     self.assertEqual(expected, actual,
                      'exp: %s; act: %s' % (expected, actual))