From c298bde8700f6c665ada136beba3647f72eb2894 Mon Sep 17 00:00:00 2001 From: steve Date: Wed, 22 Feb 2017 14:51:12 -0600 Subject: [PATCH] ML bug fix, @TODO: apply regression on folders and have report generated --- src/utils/agents/data-collector.py | 4 +++- src/utils/agents/learner.py | 8 +++++--- src/utils/ml.py | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/utils/agents/data-collector.py b/src/utils/agents/data-collector.py index 4aeaace..39fe528 100644 --- a/src/utils/agents/data-collector.py +++ b/src/utils/agents/data-collector.py @@ -26,6 +26,7 @@ class ICollector(Thread) : self.lock = RLock() self.factory = DataSourceFactory() self.init() + self.name = 'data-collector@'+self.id def init(self): @@ -78,12 +79,13 @@ class ICollector(Thread) : label = thread.getName() row = {} if label == 'folders': - row[id] = data + row = [ dict({"id":self.id}, **_row) for _row in data] else: label = id row = data self.lock.acquire() store = self.factory.instance(type=write_class,args=read_args) + store.write(label=label,row=row) self.lock.release() if 'MONITOR_CONFIG_PATH' in os.environ : diff --git a/src/utils/agents/learner.py b/src/utils/agents/learner.py index 26c78bf..1c7bb36 100644 --- a/src/utils/agents/learner.py +++ b/src/utils/agents/learner.py @@ -41,6 +41,7 @@ class Anomalies(Thread) : pass def stop(self): self.quit = True + def run(self): DELAY = self.config['delay'] * 60 reader = self.factory.instance(type=self.rclass,args=self.rw_args) @@ -52,15 +53,16 @@ class Anomalies(Thread) : while self.quit == False : print ' *** ',self.name, ' ' , str(datetime.today()) for app in self.apps: - print '\t',str(datetime.today()),' ** ',app + print '\t',app,str(datetime.today()),' ** ',app logs = ML.Filter('label',app,rdata) + if logs : handler = AnomalyDetection() value = handler.learn(logs,'label',app,features,yo) - print value if value is not None: value = dict(value,**{"features":features}) - r[id][app] = value + value = dict({"id":self.id},**value) + #r[id][app] = value self.lock.acquire() writer = self.factory.instance(type=self.wclass,args=self.rw_args) writer.write(label='learn',row=value) diff --git a/src/utils/ml.py b/src/utils/ml.py index ff6faea..287919e 100644 --- a/src/utils/ml.py +++ b/src/utils/ml.py @@ -209,6 +209,7 @@ class AnomalyDetection: sigma = info['parameters']['cov'] xu = info['parameters']['mean'] epsilon = info['performance']['epsilon'] + return self.gPx(xu,sigma,xo,epsilon) """ This function computes performance metrics i.e precision, recall and f-score @@ -228,7 +229,8 @@ class AnomalyDetection: tn += 1 if (test[i][1] == labels[i] and test[i][1] == 0) else 0 precision = tp / (tp + fp) if tp + fp > 0 else 1 recall = tp / (tp + fn) if tp + fp > 0 else 1 - fscore = (2 * precision * recall)/ (precision + recall) + + fscore = (2 * precision * recall)/ ((precision + recall) if (precision + recall) > 0 else 1) return {"precision":precision,"recall":recall,"fscore":fscore} """