在这种情况下如何使用 IQR 规则找到异常值 (40, 10)?

假设我需要使用 IQR 规则删除异常值,即本例中的 (40, 10)(请参阅下面所附的图),我该怎么做?


与邻近点相比,(40, 10) 绝对是异常值。但是,

Q1 = 11.25,

Q3 = 35.75

1.5 * IQR = 1.5 * (Q3 - Q1) = 36.75

仅 y 值低于 11.25-36.75 或大于 35.75+36.75 的点被视为异常值。

如果必须使用 IQR 规则,如何使用 IQR 规则查找并删除 (40, 10)?


这是我的代码:


import pandas as pd

import matplotlib.pyplot as plt


test = pd.DataFrame({'x': range(50), 'y': [i if i != 40 else 10 for i in range(50)]})


plt.figure(**FIGURE)

plt.scatter(test['x'], test['y'], marker='x')

plt.show()

这是从上面的代码生成的图。

https://img2.mukewang.com/650032bf0001085206540329.jpg

白衣染霜花
浏览 102回答 1
1回答

蝴蝶不菲

您使用 IQR 的方式仅考虑 X 轴分量。如果不包括 Y 轴分量,则 (40, 10) 处的点不是异常值。您应该使用考虑 2D 实例的方法,例如局部异常值因子或任何其他方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python