我使用Python从一些数据中得到以下图:
示例数据可能是这样的:
339
305
276
248
263
424
451
438
410
399
399
398
.
.
.
我要做的是获取所有峰值的索引。请注意,我只想要最大的峰值。我目前正在做的是使用高斯平滑来平滑数据以去除半峰和谷以获得平滑曲线并找到那些的最大值的索引。它有效,但它不是一个非常干净的解决方案。
我想知道是否有更好的方法可以使用某些聚类方法(例如kmeans)来做到这一点?有人能指出我的解决方案吗?
答案 0 :(得分:1)
事实上,使用高斯平滑可能意味着您正在进行所谓的核密度估计。
这是 - 特别是对于低维数据 - 被认为是良好的统计实践。您可能希望阅读KDE以了解如何选择内核带宽,但除此之外,请坚持使用这种既定方法。
只有当你有多个变量时,k-means才有用,因为它会同时优化所有变量。但你必须选择k,你可能事先不知道。尝试从密度估算的角度来看待它,不要试图做太花哨的事情。