0
假设我有24行数据,每行代表一天中的一小时。我想实现的是实现一种能够检测数据趋势的算法,并可将其分为2个块 - “好”块和“坏”块。例如,在附图中,你可以看到在第6行有一个好的块开始并在第19行结束。第0行也有很好的分数,但它不是块的一部分,所以算法应该知道如何处理这种情况。 我认为这是关于聚类,但找不到足够简单的东西来满足我们的需求。 期待任何建议。算法查找趋势块
假设我有24行数据,每行代表一天中的一小时。我想实现的是实现一种能够检测数据趋势的算法,并可将其分为2个块 - “好”块和“坏”块。例如,在附图中,你可以看到在第6行有一个好的块开始并在第19行结束。第0行也有很好的分数,但它不是块的一部分,所以算法应该知道如何处理这种情况。 我认为这是关于聚类,但找不到足够简单的东西来满足我们的需求。 期待任何建议。算法查找趋势块
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
一个 “好” 块的定义似乎是主观的。如果你能以某种方式指定它,那将是一件好事。你会说这样的话:“在90%的样本中绝大多数(不包括开始/结束)的X的持续值? – purpletentacle
是不是很简单的阈值和分析连接组件? –
@NicoSchertler:是的,但是”while值> =阈值)“线性扫描足以找到这些”组件“,并且您可以简单地检查每个实时的长度并在必要时报告它。 –