【发布时间】:2020-09-29 21:21:07
【问题描述】:
我不知道如何从二维数据中去除异常值。 例如我有:
import numpy as np
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([1, 2, 3, 4, 5, 1, 7, 8, 2, 10])
plt.xlabel("time")
plt.ylabel("value")
plt.scatter(x, y, color = "g", marker = "o")
如您所见,异常值是位于第 5 和第 8 X 位置的点。
如何在python中找到并删除它们?
重要
这只是一个示例数据。如果您想帮助我,请提供有关如何处理此类问题的一般答案。 IQR 似乎不能解决这个问题。
【问题讨论】:
-
数据是一直是这样线性增加的线,还是会减少?
-
您可以测量不同点的斜率并根据平均值对它们进行阈值
-
这种异常值检测问题是为RANSAC量身定做的。它的实现简单易行,该维基百科文章中给出了一个伪代码示例。试一试。
-
你用什么算法来决定什么是异常值,什么不是异常值?到目前为止,根据您自己的研究,您尝试了什么,您的尝试有什么问题?如果您正在寻找用于一般异常值检测的数学算法或统计测试,可以使用数学和统计堆栈交换站点。该网站要求minimal reproducible example