From d6e1b27b9d2de62b16feb95ace12ce1f4b868109 Mon Sep 17 00:00:00 2001 From: steve Date: Fri, 20 Jan 2017 14:39:50 -0600 Subject: [PATCH] Operationalizing the learner --- src/api/index.py | 24 +++++++++++++++--------- src/utils/ml.py | 6 ++++-- src/utils/workers.py | 3 ++- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/api/index.py b/src/api/index.py index 7a07f7a..216c3af 100644 --- a/src/api/index.py +++ b/src/api/index.py @@ -139,29 +139,35 @@ def learn(): gReader = factory.instance(type=class_read,args=p) d = gReader.read() if 'learn' in d : - logs = d['learn'] + info = d['learn'] del d['learn'] else : - logs = [] + info = [] r = [] if 'id' in request.args: id = request.args['id'] d = d[id] - print CONFIG['monitor']['processes']['config'][id] - print (apps) - + apps = CONFIG['monitor']['processes']['config'][id] + #print (apps) + params = {} + for item in info: + id = item['label'] + params[id] = item #apps = list(set(ML.Extract(['label'],d))) p = AnomalyDetection() - #for row in d : - #xo = ML.Filter('label',app,d) + for name in apps : + xo = ML.Filter('label',name,d) + _info = params[name] #info = ML.Filter('label',app,logs) - #value = p.predict(xo,info) + value = p.predict(xo,_info) + print [row[1] for row in value] + break #print app,value #if value is not None: # r.append(value) print r - return json.dumps("[]") + return json.dumps([]) diff --git a/src/utils/ml.py b/src/utils/ml.py index 041dad1..b06a5b5 100644 --- a/src/utils/ml.py +++ b/src/utils/ml.py @@ -116,14 +116,16 @@ class AnomalyDetection: @param info stored information about this """ def predict(self,xo,info): - xo = ML.Filter(info['extract'],xo) + + xo = ML.Extract(info['features'],xo) + if not xo : return None sigma = info['parameters']['cov'] xu = info['parameters']['mean'] epsilon = info['performance']['epsilon'] - return self.getPx(xu,sigma,xo,epsilon) + return self.gPx(xu,sigma,xo,epsilon) """ This function computes performance metrics i.e precision, recall and f-score for details visit https://en.wikipedia.org/wiki/Precision_and_recall diff --git a/src/utils/workers.py b/src/utils/workers.py index 3ad0cac..2948a65 100644 --- a/src/utils/workers.py +++ b/src/utils/workers.py @@ -174,6 +174,7 @@ class ThreadManager: for id in ThreadManager.Pool : thread = ThreadManager.Pool[id] r[id] = thread.isAlive() + @@ -190,4 +191,4 @@ class Factory : return {"class":ref,"config":config['monitor'][id]["config"]} else: return None - \ No newline at end of file +