【问题标题】:Find peaks/thresholds from data/plot using Python使用 Python 从数据/绘图中查找峰值/阈值
【发布时间】:2014-02-06 13:11:27
【问题描述】:

我使用 Python 从一些数据中得到以下图:

示例数据可能是这样的:

339
305
276
248
263
424
451
438
410
399
399
398
.
.
.

我要做的是获取所有峰的索引。请注意,我只想要最大的峰值。我目前正在做的是使用高斯平滑对数据进行平滑处理,以去除半峰和低谷以获得平滑曲线并找到其中最大值的索引。它有效,但它不是一个非常干净的解决方案。

我想知道是否有更好的方法使用一些聚类方法(例如 kmeans)来做到这一点?有人可以指出我的解决方案吗?

【问题讨论】:

  • 为什么这不是一个干净的解决方案?您发布的数据代表什么?我认为它是 y 值,但不清楚。
  • 这是一个周期信号。如果您可以安全地假设这种周期性得以维持,则可以在特定时间窗口内寻找最大值。
  • 数据是心脏的跳动间隔,所以是的,从某种意义上来说,就是y值。至于周期性,是的,数据将是周期性的,但它可能会有所不同,因此我不能只选择一个窗口。至于为什么它不是太干净,我正在更改我要返回的数据。如果我可以使用原始数据,我会更喜欢它。

标签: python graph plot cluster-analysis


【解决方案1】:

事实上,使用高斯平滑可能意味着您正在执行所谓的核密度估计

这 - 特别是对于低维数据 - 被认为是良好的统计实践。您可能想阅读 KDE 以了解如何选择内核带宽,但除此之外,请坚持这个既定的方法。

k-means 仅在您有多个变量时才有用,因为它会同时优化所有变量。但是您必须选择 k,而您可能事先并不知道。

尝试从密度估计的角度来处理它,不要尝试做太花哨的事情。

【讨论】:

  • 谢谢,KDE 看起来是要走的路。似乎最简单是最好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多