没学过机器学习的东西, Python 怎么检测时间序列连续变量数据中离群值 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
habin
V2EX    Python

没学过机器学习的东西, Python 怎么检测时间序列连续变量数据中离群值

  •  
  •   habin 2019-08-27 14:41:03 +08:00 5075 次点击
    这是一个创建于 2244 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 EXCEL 生成散点图,可以看到有 3 个离群点存在,百度了一下是可以使用 PYOD 库的方法,但苦于没有机器学习的基础,来 V 吧问问最好是用哪个算法模板,大概的思路是怎么处理的?图如链接所示: https://imgchr.com/i/m53WCt

    15 条回复    2019-10-08 08:38:08 +08:00
    habin
        1
    habin  
    OP
       2019-08-27 14:43:48 +08:00
    还有整个文件的列数据都或多或少存在离群值,如何高效的找出来?
    ipwx
        2
    ipwx  
       2019-08-27 14:46:37 +08:00   2
    你这数据有周期规律么?比如按天看有规律。最好给个完整的数据图片。

    我做过一篇论文,有关时间序列异常检测的。你可以把场景给我描述一下,我判断是不是适用。

    论文: https://dl.acm.org/citation.cfm?id=3185996
    代码: https://github.com/haowen-xu/donut
    dlsflh
        3
    dlsflh  
       2019-08-27 14:50:50 +08:00 via Android
    每个点的值和他周围的若干个点的值差异过大就拿出来不可以吗?
    DoctorCat
        4
    DoctorCat  
       2019-08-27 16:11:52 +08:00
    kNN 也行的
    necomancer
        5
    necomancer  
       2019-08-27 17:59:17 +08:00
    necomancer
        6
    necomancer  
       2019-08-27 18:38:31 +08:00   1
    抱歉刚才没看图,你这种例子我觉得用移动平均可能更简单:
    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))

    移动平均用的点个数、和几倍标准差比,根据具体情况调整一下。
    habin
        7
    habin  
    OP
       2019-08-27 19:39:04 +08:00
    @ipwx 没有周期规律,是飞机航班数据的记录,数据是一个时间段的,有一些参数是连续变量,例如经纬度,由于飞机设备记录的原因,可能会记录错误,出现离群值,例如图所示
    winglight2016
        8
    winglight2016  
       2019-08-27 21:51:51 +08:00
    你这个是 outlier 数据点,跟时间序列无关,线性回归就好了,用 sklearn 库,基本上看文档就能搞定
    MinQ
        9
    MinQ  
       2019-08-27 21:54:33 +08:00 via Android
    做数据分析的飘过,这跟机器学习没啥关系。假设一段时间内的点大部分服从线性规律,只有少部分离群点。那么我觉得可以直接计算这些点的一个线性拟合,然后算出每个点到这条线的距离,排除距离大于某个阈值的点就行了
    flyaway
        10
    flyaway  
       2019-08-27 23:11:05 +08:00
    数据是线性的话,直接用线性回顾就可以了。
    ipwx
        11
    ipwx  
       2019-08-28 01:54:02 +08:00 via Android   1
    @habin 你这个场景可能适合用 卡尔曼滤波器 kalman filter。当年 NASA 科研人员为了处理航天器传感器的错误数据提出的。
    abakane
        12
    abakane  
       2019-08-28 08:32:42 +08:00
    数据是线性,线性回归就可以,3 倍方差之外得点基本都是异常点。
    不是线性得话,考虑 knn,如果有空间分布得话,可以用空间聚类。
    to
        13
    to  
       2019-08-28 12:58:58 +08:00 via Android
    github Anomaly Detection
    woaikaifa120
        14
    woaikaifa120  
       2019-09-29 16:02:23 +08:00
    楼主去中航信了吗?请问联系方式是多少呢?有事需要咨询一下
    habin
        15
    habin  
    OP
       2019-10-08 08:38:08 +08:00
    @woaikaifa120 不好意思,不在中航信
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1450 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 16:47 PVG 00:47 LAX 09:47 JFK 12:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86