分割功率变化数据我们正在处理一个用例,客户拥有某个产品的功率变化数据(平均值和最大值)。他们之前根据功率值的变化手动将图表划分为不同的工作负载状态。现在,他们计划使用 JMP 实现这一划分过程的自动化。
我已附上数据以及一张显示预期(手动得出)结果的屏幕截图。每个已识别的状态都由起点和终点定义,这些起点和终点列在“起点/终点”列中。对于每个状态,在实际起点和终点周围应用±5行的缓冲区。
与客户交谈后的一些重要澄清:
1. 变化不是基于时间的
2. 状态数不固定。它不会像截图中显示的那样总是 11 个
3. 使用第二个 Y 轴变量区分手动结果中的状态 7 和 8
我尝试了层次聚类和 K 均值聚类,它们的结果接近手动结果,但不完全匹配。有什么建议可以在 JMP 中更好地自动化此细分过程吗?
回复:分割功率变化数据我最初的想法是去除零点,然后平滑数据,并在导数中寻找峰值作为不同段的标记。我认为这是可行的,但有点“蛮力”。聚类听起来像是一个“更好”的解决方案,尽管我在这方面没有太多经验。
使用层次聚类,我通过将方法设置为“单一”,数据格式设置为“数据堆叠”,并将“非标准化”设置为“非标准化”,取得了一些进展。如果我理解正确的话,我认为这将通过查看时间和功率上彼此接近的“相邻”点来形成聚类,并将它们视为二维空间中的点,以时间为 X,功率为 Y。也许其他人可以从这里借鉴?
Hierarchical Cluster(
Y( :"Time(s)"n, :"Power AVG (W)"n ),
Method( "Single" ),
Standardize Data( 0, "(for backward compatibility)" ),
Standardize By( "Unstandardized" ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 20 ),
SendToReport(
Dispatch( {"Dendrogram"}, "Clust Dendro", FrameBox,
{Frame Size( 47, 700 )}
)
)
);
回复:分割功率变化数据转念一想,我觉得使用“数据堆叠”是不正确的。但使用“单一”+“非标准化”对我来说仍然能得到不错的结果。