有一组采样数据,横轴时间,绘制出来一张图,希望能标识出图中的尖峰,对“尖峰”没有量化定义,目前是两种,一是某一个时间点的激增,二是某一段时间的激增;从图上看就是突然某一个点比前后都高很多,或者是平滑处理后的包络图,某会有类似二次函数的突起。
这两种 尖峰能否使用现有的库,通过分析数据进行标注呢,确定出现尖峰的时间段即可
|  |      1F281M6Dh8DXpD1g2      2021-03-11 14:23:58 +08:00 异常值检测呗 | 
|  |      2lixuda      2021-03-11 14:36:03 +08:00 sklearn 库看看,有个异常检查。 | 
|  |      3Wincer      2021-03-11 14:50:14 +08:00 mark 一下,楼主有方案了麻烦告知一下,我最近也有类似的需求。目前尝试了 PCA,但是效果不是很理想。 | 
|  |      4guyskk0x0      2021-03-11 14:59:39 +08:00 via Android Facebook Prophet | 
|  |      5learningman      2021-03-11 15:14:29 +08:00 你先用数学把“尖峰”定义好,然后翻译成代码就行了 | 
|  |      6no1xsyzy      2021-03-11 15:20:07 +08:00 话说传统上异常值检测有:在回归时,添加某一个值会使得 r 值突然降低。 | 
|  |      7imn1      2021-03-11 15:24:56 +08:00 第一个想到应用场合是证券的放量 我目前的做法是设定斜率临界点,前后两点拉直线的斜率,但不太满意 此帖我会回看 | 
|  |      8sdushn OP @learningman emm,其实就是这个尖峰的数学定义没有讨论出很好的定义 | 
|      9superrichman      2021-03-11 15:50:40 +08:00 via iPhone 我是通过计算 z-score 来找 outlier,有一定局限性 看看有其它好方法没 | 
|  |      10Macv1994      2021-03-11 16:23:47 +08:00 via Android 在上一家公司做过,我记得 numpy 还是 scipy 中有一个函数可以直接做尖峰检测 | 
|      11hasasiki      2021-03-11 16:31:30 +08:00 现有库不太清楚,不过可以试试直接找到所有峰值,然后再按自己需求筛选,找峰值的算法就很多了 | 
|  |      12Vectors      2021-03-11 17:21:24 +08:00 scipy 库,scipy.signal.find_peaks https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html | 
|      13yesterdaysun      2021-03-12 10:31:17 +08:00 之前用过 peakutils | 
|  |      14sdushn OP @yesterdaysun 好用的,我目前也是采用了这个方案 | 
|  |      15necomancer      2021-03-14 20:40:58 +08:00 https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html 一般这些算法都是基于小波变换,看看原理很简单的。 |