首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异常检测与去除/插值

异常检测与去除/插值
EN

Data Science用户
提问于 2021-07-30 16:25:32
回答 1查看 82关注 0票数 -1

我正在对时间序列数据执行机器学习回归任务。我有一个数据框架,里面充满了各种资产和经济数据的收盘价。我希望在整个数据帧上执行异常值检测。以下是我的问题:

  • 有什么好的方法来做这件事?

以下是我的dataframe (Df)的一个小节:

代码语言:javascript
运行
复制
              audjpy    audnzd    audusd   usdcad   cadchf      cadjpy  
2008-01-01  98.050003  1.140000  0.877116  0.99320  1.13960  112.599998   
2008-01-02  96.559998  1.139500  0.884017  0.99440  1.12560  109.820000   
2008-01-03  96.550003  1.140900  0.881601  0.98880  1.12370  110.693001   
2008-01-04  95.168999  1.138300  0.876578  0.99880  1.10470  108.459999   
2008-01-07  95.220001  1.134500  0.871916  1.00550  1.11130  108.559998
...         ...         ...      ...       ...     ...       ....
EN

回答 1

Data Science用户

回答已采纳

发布于 2021-07-30 21:22:24

在我看来,我会单独处理每一个信号。该方法还取决于信号和异常/异常值的定义(例如,意外的长峰值?)。但是我可以指出一些你可以尝试的方法,如果它们对你的信号有效的话:

  1. 如果您的信号是正态分布(或非常接近正态分布),您可以删除所有位于NaN之外的点,其中\mu是信号的平均值,\sigma的标准差和n将被检查(您可以尝试绘制点直方图并仔细检查分布)。
  2. 一种更复杂的方法是通过对信号进行滚动均值滤波来捕获趋势,并计算残差信号=原始趋势。然后清理残差(如果你绘制残差分布,你会发现它很可能是单峰--有时是对称的.,所以清理这样的信号是很好的。)计算残差的IQR (四分位数范围),除去位于[q_1 - n*IQR, q_3 + n * IQR]之外的点,其中q_1q_3分别表示残差信号的第一和第三位数,n通常使用2或3.

当然,当您检测到异常值时,您可以用NaN替换值并在以后进行插值。那应该很好..。

最后,还有许多其他的方法,并且已经做了很多工作,我希望我的回答能帮助你,甚至激励其他的方法。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/99523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档