2017-04-16 54 views
0

我有一個python中的數據列表,它表示時間上的作業數量。我想檢測此數據集中的重大更改。我的意思是,我希望每次數據值的增加或減少都超過上一個檢查點的特定百分比。檢測到數據列表中的重大變化

舉例來說,如果我有一個像[10,..,10,100,..,100,200,200,...,100,10]數據。有4個重大變化。

什麼是檢測此問題的理想方法/算法?

回答

1

你可以看一下當前和下一列表元素之間的絕對差值,如果差值超過一定閾值報告它的指數,例如:

THR = 50 
data = [10,10,100,100,200,200,100,10] 
[(i,abs(x-y)>THR) for i,(x,y) in enumerate(zip(data,data[1:])) if abs(x-y)>THR] 
#[1, 3, 5, 6] - gap after items 1 (10->100), 3 (100->200), etc. 
+0

我如何處理它的場景中變化較爲緩慢像這裏給出的例子http://stackoverflow.com/questions/43722597/detect-significant-changes-in-a-data-set-that-gradually-changes? – brokendreams

+0

那麼,改變THR? – DyZ