我正在编写一个Python程序,用于查找页面上感兴趣的区域。所有感兴趣的值的页面上的位置都给了我,但是一些值(通常只有一个或两个)远离其他值,我想删除它们。数据集不是很大,少于100个数据点,但我需要多次这样做。
我在第一象限的两个轴(x和y)上有一个笛卡尔坐标系,所以只有正值。
我的数据点表示在此坐标系上绘制的框,我将其存储为元组中的两个坐标对的集合。由于所有线都是直的,因此可以通过两个坐标对绘制一个框。示例:(8,2,15,10)将绘制一个带有索引(x,y)=(8,2),(8,10),(15,10)和(15,2)的框。
我正在尝试删除此集中的异常值,但我很难找到一个好的方法。我已经考虑通过找到IQR并删除满足这些标准的所有点来删除异常值:
Q1 - 1.5 * IQR或
Q3 + 1.5 * IQR
这里的问题是我很难弄清楚因为这些值不仅仅是坐标而是区域,如果你愿意的话。然而,它们是重叠的,因此它们也不适合直方图。
首先,我想我可能会为每个盒子跨越的整个值添加一个点,在这种情况下,示例框会创建56个点。在我看来,好像这个解决方案非常糟糕。有没有人有任何替代解决方案?
答案 0 :(得分:0)
主要有两种方法:要么修正阈值,要么让机器学习为你推断它。
对于机器学习,您可以使用Isolation Forest。
如果你不想要ML那么你必须自己确定门槛。所以你可以使用一个标准。有no.linalg.norm(p1 - p2)
或者如果您想要更多地控制指标,则cdist:
scipy.spatial.distance.cdist(p1, p2)