![78db4688beb5a302f59bea03db0129dc.png](https://i-blog.csdnimg.cn/blog_migrate/2e3f593175a552cf49b04565ec95a2b5.jpeg)
- IQR(InterQuartile Range)检测
常用于一维数据的异常值检测,首先计算数据的下四分位数Q1(25%分位数)、中位数Q2(50%)分位数、上四分位数Q3(75%分位数),再计算 IQR = Q3 - Q1,最好通过k来调整范围,得到异常值。
![69d95a6406f6955903be776e54e74be7.png](https://i-blog.csdnimg.cn/blog_migrate/7e66c1438c5b5de534c15a155f2f7812.png)
当k=1.5时,称为内限,经典的箱线图正是以此为界计算异常值。当k=3时,称为外限。处于内限以外位置的点表示的数据都是异常值,其中在内限与外限之间的异常值为温和的异常值(mild outliers),在外限以外的为极端的异常值(extreme outliers)
import numpy as np
import random
data = np.array([random.random() for i in range(10000)])
k= 1.5
IQR = np.percentile(data, 75) - np.percentile(data, 25)
min_bound, max_bound = np.percentile(data, 25) - k * IQR, np.percentile(data, 75) - k * IQR
print("min_bound is {0:.4f}, max_bound is {1:.4f}".format(min_bound, max_bound))
------
min_bound is -0.4985, max_bound is 0.0026
2. Z-score
假定数据是高斯分布,异常值是分布尾部的数据点,因此远离数据的平均值。距离的远近取决于使用公式计算的归一化数据点
![7cb1af5a93244ce6d960de1971582988.png](https://i-blog.csdnimg.cn/blog_migrate/fac78f061344f83bf51d3bed8c8f71d6.png)
其中
然后经过标准化处理后,异常值也进行标准化处理,其绝对值大于
![275e5a67c56d7e47adcee655bce8b03b.png](https://i-blog.csdnimg.cn/blog_migrate/2d046a7a2e5fc129db609381d46bf05b.png)