是否有合适的 Python 库实现一组采样数据的尖峰检测呢

2021-03-11 14:22:52 +08:00
 sdushn

有一组采样数据,横轴时间,绘制出来一张图,希望能标识出图中的尖峰,对“尖峰”没有量化定义,目前是两种,一是某一个时间点的激增,二是某一段时间的激增;从图上看就是突然某一个点比前后都高很多,或者是平滑处理后的包络图,某会有类似二次函数的突起。
这两种 尖峰能否使用现有的库,通过分析数据进行标注呢,确定出现尖峰的时间段即可

2664 次点击
所在节点    Python
15 条回复
liprais
2021-03-11 14:23:58 +08:00
异常值检测呗
lixuda
2021-03-11 14:36:03 +08:00
sklearn 库看看,有个异常检查。
Wincer
2021-03-11 14:50:14 +08:00
mark 一下,楼主有方案了麻烦告知一下,我最近也有类似的需求。目前尝试了 PCA,但是效果不是很理想。
guyskk0x0
2021-03-11 14:59:39 +08:00
Facebook Prophet
learningman
2021-03-11 15:14:29 +08:00
你先用数学把“尖峰”定义好,然后翻译成代码就行了
no1xsyzy
2021-03-11 15:20:07 +08:00
话说传统上异常值检测有:在回归时,添加某一个值会使得 r 值突然降低。
imn1
2021-03-11 15:24:56 +08:00
第一个想到应用场合是证券的放量
我目前的做法是设定斜率临界点,前后两点拉直线的斜率,但不太满意
此帖我会回看
sdushn
2021-03-11 15:42:27 +08:00
@learningman emm,其实就是这个尖峰的数学定义没有讨论出很好的定义
superrichman
2021-03-11 15:50:40 +08:00
我是通过计算 z-score 来找 outlier,有一定局限性
看看有其它好方法没
Macv1994
2021-03-11 16:23:47 +08:00
在上一家公司做过,我记得 numpy 还是 scipy 中有一个函数可以直接做尖峰检测
hasasiki
2021-03-11 16:31:30 +08:00
现有库不太清楚,不过可以试试直接找到所有峰值,然后再按自己需求筛选,找峰值的算法就很多了
Vectors
2021-03-11 17:21:24 +08:00
yesterdaysun
2021-03-12 10:31:17 +08:00
之前用过 peakutils
sdushn
2021-03-12 10:52:48 +08:00
@yesterdaysun 好用的,我目前也是采用了这个方案
necomancer
2021-03-14 20:40:58 +08:00
https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html

一般这些算法都是基于小波变换,看看原理很简单的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX