首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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 · 144 天前 · 2308 次点击
    这是一个创建于 144 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    论文: https://dl.acm.org/citation.cfm?id=3185996
    代码: https://github.com/haowen-xu/donut
    dlsflh
        3
    dlsflh   144 天前 via Android
    每个点的值和他周围的若干个点的值差异过大就拿出来不可以吗?
    DoctorCat
        4
    DoctorCat   144 天前
    kNN 也行的
    necomancer
        6
    necomancer   144 天前   ♥ 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   144 天前
    @ipwx 没有周期规律,是飞机航班数据的记录,数据是一个时间段的,有一些参数是连续变量,例如经纬度,由于飞机设备记录的原因,可能会记录错误,出现离群值,例如图所示
    winglight2016
        8
    winglight2016   144 天前
    你这个是 outlier 数据点,跟时间序列无关,线性回归就好了,用 sklearn 库,基本上看文档就能搞定
    MinQ
        9
    MinQ   144 天前 via Android
    做数据分析的飘过,这跟机器学习没啥关系。假设一段时间内的点大部分服从线性规律,只有少部分离群点。那么我觉得可以直接计算这些点的一个线性拟合,然后算出每个点到这条线的距离,排除距离大于某个阈值的点就行了
    flyaway
        10
    flyaway   144 天前
    数据是线性的话,直接用线性回顾就可以了。
    ipwx
        11
    ipwx   144 天前 via Android   ♥ 1
    @habin 你这个场景可能适合用 卡尔曼滤波器 kalman filter。当年 NASA 科研人员为了处理航天器传感器的错误数据提出的。
    abakane
        12
    abakane   144 天前
    数据是线性,线性回归就可以,3 倍方差之外得点基本都是异常点。
    不是线性得话,考虑 knn,如果有空间分布得话,可以用空间聚类。
    to
        13
    to   143 天前 via Android
    github Anomaly Detection
    woaikaifa120
        14
    woaikaifa120   111 天前
    楼主去中航信了吗?请问联系方式是多少呢?有事需要咨询一下
    habin
        15
    habin   103 天前
    @woaikaifa120 不好意思,不在中航信
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4407 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 03:05 · PVG 11:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.