def test_method_param(self): self.assertTrue( Config(method='lof')['parameter']['ignore_kth_same_point']) self.assertEqual('inverted_index_euclid', Config(method='lof')['parameter']['method']) self.assertEqual('euclid_lsh', Config(method='light_lof')['parameter']['method'])
def setUp(self): self._service = Anomaly.run(Config())
def test_default(self): config = Config.default() self.assertEqual('lof', config['method'])
def test_methods(self): config = Config() self.assertTrue(isinstance(config.methods(), list))
# Define a function to determine if the record is positive or negative. # In this example we treat `Iris-virginica` as an "anomaly" record. def is_positive(x): return x == 'Iris-virginica' # Create a Dataset. dataset = Dataset(loader, schema) # Extract the negative (non-anomaly) dataset. dataset_neg = dataset.convert( lambda data: filter(lambda x: not is_positive(x['Species']), data)) # Create an Anomaly Service. cfg = Config(parameter={'nearest_neighbor_num': 3}) anomaly = Anomaly.run(cfg) # Update the anomaly model using negative dataset. for (idx, row_id, flag, score) in anomaly.add(dataset_neg): pass # Calculate LOF scores for the full dataset. # It is expected that `Iris-virginica` records get higher scores than others. y_true = [] y_score = [] for (idx, row_id, flag, score) in anomaly.calc_score(dataset): y_true.append(is_positive(flag)) y_score.append(score) print('Score ({0}): {1}'.format(flag, score))
def test_simple(self): config = Config() self.assertEqual('lof', config['method'])
def test_embedded(self): anomaly = Anomaly.run(Config(), embedded=True)