0

假設我有24行數據,每行代表一天中的一小時。我想實現的是實現一種能夠檢測數據趨勢的算法,並可將其分爲2個塊​​ - 「好」塊和「壞」塊。例如,在附圖中,你可以看到在第6行有一個好的塊開始並在第19行結束。第0行也有很好的分數,但它不是塊的一部分,所以算法應該知道如何處理這種情況。 我認爲這是關於聚類,但找不到足夠簡單的東西來滿足我們的需求。 期待任何建議。算法查找趨勢塊

enter image description here

+3

一個 「好」 塊的定義似乎是主觀的。如果你能以某種方式指定它,那將是一件好事。你會說這樣的話:「在90%的樣本中絕大多數(不包括開始/結束)的X的持續值? – purpletentacle

+1

是不是很簡單的閾值和分析連接組件? –

+0

@NicoSchertler:是的,但是」while值> =閾值)「線性掃描足以找到這些」組件「,並且您可以簡單地檢查每個實時的長度並在必要時報告它。 –

回答

1
start = -1 
Append a below-threshold value to the end of the data array x[] 
For i from 1 to n: 
    If x[i] >= thresholdValue: 
     if start == -1: 
      start = i 
    Else: 
     If start != -1 and i - start >= thresholdLength: 
      ReportGoodBlock(start, i-1) 
     start = -1