2019年12月20日 星期五

NAB實驗平台使用方法


github.com/numenta/NAB
即時串流資料分析演算法實驗平台


當要加入新的演算法進NAB平台測試時,你的程式必需改成下列格式:

class MyDetector(AnomalyDetector):
 def __init__(self, *args, **kwargs): 
   super(MyDetector, self).__init__(*args, **kwargs)
   ....


 def handleRecord(self, inputData):
   #inputData['timestamp']
   #inputData['value']
   self.recordCount = self.recordCount + 1
   ....
   return (anomalyScore,)



自己原本演算法主程式是放進handleRecord函數裡,但是要改成可以一筆記錄一筆記錄收,handleRecord會被外部
的程式呼叫多次,但每次呼叫只傳一筆記錄,故inputData只有一筆資料的timestamp及value(實際資料簡化成單
一值,兩筆記錄的值越接近則記錄越一樣),而且handleRecord要直接回傳此筆記錄的anomalyScore(異常機率),
但在class裡可以自己設定陣列變數存之前傳進來的記錄。


檔案放在,如同其它detectors:
nab/detectors/MyDetector/MyDetector.py

nab/detectors/MyDetector/_init_.py


/run.py程式碼最下面的地方要加入下列程式,如同其它detectors一樣:

if "MyDetector" in args.detectors:
 from nab.detectors.MyDetector.MyDetector import (MyDetector)


在檔案config/thresholds.json要加入下列的參數,threshold是指anomalyScore大於多少就算異常,此參數會被
--optimize調整(在Command Line執行run.py的參數)

"MyDetector": {
"reward_low_FN_rate": {
"score": 0,
"threshold": 0.9
},
"reward_low_FP_rate": {
"score": 0,
"threshold": 0.9
},
"standard": {
"score": 0,
"threshold": 0.9
}
},



沒有留言:

張貼留言

IKEA吊櫃廚櫃

 好不容易裝好IKEA買來的吊櫃,花了三天。 從組裝,鑽牆,上牆調水平,累死我了。