通过 EXCEL 生成散点图,可以看到有 3 个离群点存在,百度了一下是可以使用 PYOD 库的方法,但苦于没有机器学习的基础,来 V 吧问问最好是用哪个算法模板,大概的思路是怎么处理的?图如链接所示: https://imgchr.com/i/m53WCt
1 habin OP 还有整个文件的列数据都或多或少存在离群值,如何高效的找出来? |
![]() | 2 ipwx 2019-08-27 14:46:37 +08:00 ![]() 你这数据有周期规律么?比如按天看有规律。最好给个完整的数据图片。 我做过一篇论文,有关时间序列异常检测的。你可以把场景给我描述一下,我判断是不是适用。 论文: https://dl.acm.org/citation.cfm?id=3185996 代码: https://github.com/haowen-xu/donut |
3 dlsflh 2019-08-27 14:50:50 +08:00 via Android 每个点的值和他周围的若干个点的值差异过大就拿出来不可以吗? |
![]() | 5 necomancer 2019-08-27 17:59:17 +08:00 |
![]() | 6 necomancer 2019-08-27 18:38:31 +08:00 ![]() 抱歉刚才没看图,你这种例子我觉得用移动平均可能更简单: def moving_average(a, n=3): ....ret = np.cumsum(np.pad(a, n, 'edge'), dtype=float) ....ret[n:] = ret[n:] - ret[:-n] ....return ret[n:-n] / n am = moving_average(a, n=15) #离群点少的话 np.argwhere(np.abs(a-am)>3 * np.std(a-am)) 移动平均用的点个数、和几倍标准差比,根据具体情况调整一下。 |
7 habin OP @ipwx 没有周期规律,是飞机航班数据的记录,数据是一个时间段的,有一些参数是连续变量,例如经纬度,由于飞机设备记录的原因,可能会记录错误,出现离群值,例如图所示 |
![]() | 8 winglight2016 2019-08-27 21:51:51 +08:00 你这个是 outlier 数据点,跟时间序列无关,线性回归就好了,用 sklearn 库,基本上看文档就能搞定 |
![]() | 9 MinQ 2019-08-27 21:54:33 +08:00 via Android 做数据分析的飘过,这跟机器学习没啥关系。假设一段时间内的点大部分服从线性规律,只有少部分离群点。那么我觉得可以直接计算这些点的一个线性拟合,然后算出每个点到这条线的距离,排除距离大于某个阈值的点就行了 |
![]() | 10 flyaway 2019-08-27 23:11:05 +08:00 数据是线性的话,直接用线性回顾就可以了。 |
![]() | 11 ipwx 2019-08-28 01:54:02 +08:00 via Android ![]() @habin 你这个场景可能适合用 卡尔曼滤波器 kalman filter。当年 NASA 科研人员为了处理航天器传感器的错误数据提出的。 |
![]() | 12 abakane 2019-08-28 08:32:42 +08:00 数据是线性,线性回归就可以,3 倍方差之外得点基本都是异常点。 不是线性得话,考虑 knn,如果有空间分布得话,可以用空间聚类。 |
![]() | 13 to 2019-08-28 12:58:58 +08:00 via Android github Anomaly Detection |
14 woaikaifa120 2019-09-29 16:02:23 +08:00 楼主去中航信了吗?请问联系方式是多少呢?有事需要咨询一下 |
15 habin OP @woaikaifa120 不好意思,不在中航信 |