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