微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解释 scipy 峰值检测中的参数“宽度”?

如何解决如何解释 scipy 峰值检测中的参数“宽度”?

我仍然不太确定如何理解使用 scipy 检测峰时的参数“宽度”。这是我正在考虑的直方图:

enter image description here

如果我设置

peaks,_ = find_peaks(probsuc,width=4)
peak_prominences(probsuc,peaks,wlen=7)

然后输出看起来像

(array([0.20229167,0.25791667]),array([ 4,39]),array([10,45]))

但是,如果我设置了 width=5,则只能检测到一个峰值:

(array([0.20229167]),array([4]),array([10]))

如果 width=6,则无法检测到峰值。我想知道宽度到底是什么意思? (我不太明白documentation上的描述)如果我想检测直方图上的两个主要峰值,是否有设置width值的通用策略?

谢谢:)

解决方法

width 参数告诉函数仅当一定数量的连续样本或 bin 超过 thresholdheight 参数时才将峰值视为局部最大值。

当您增加 width 的值时,峰的数量会减少,因为您正在添加越来越严格的条件。在您的示例中,width=5 未找到其中一个峰值,因为五个 bin 的高度不符合被视为局部最大值的条件。

由于 width 是超参数,因此没有单一的正确方法可以找到其最佳值。您可以找到一个好的 width 候选者的一种方法是生成许多序列并手动计算峰的数量以创建标记数据集。然后您可以运行网格搜索以找到最准确的 width,例如导致最小均方误差的宽度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。