本篇博客的目的:记录 grubbs test 的用法;
其实 用法 没啥难度,只是这个 模块安装的 模块名 有些特殊,做个记录;
import numpy as np from OUTLIERS import smirnov_grubbs as grubbs ################################### grubbs test ################################### #添加包 pip install outlier_utils ##### 缺点 # 1、只能检测单维度数据 # 2、无法精确的输出正常区间 # 3、它的判断机制是“逐一剔除”,所以每个异常值都要单独计算整个步骤,数据量大吃不消。 # 4、需假定数据服从正态分布或近正态分布 ################# 均匀分布 ################# data = np.random.uniform(1, 100, 100) data = np.concatenate((data, [5000]), 0) print(data.shape) # (101,) out = grubbs.test(data, 0.05) print(out) ### 输出正常数据 def func_error(value): error = set(value) - set(list(grubbs.test(value,alpha=0.05))) return error print(func_error(data)) # {5000.0} ################# 正态分布 ################# data_norm = np.random.normal(0, 1, 100) data_norm = np.concatenate((data_norm, [50]), 0) print(data_norm.shape) # (101,) print(func_error(data_norm)) # {50.0}
至于 grubbs test 的原理,请参考下面的链接;
下面的链接 总结了 一些 异常检测的 方法,有原理,有代码,有空看看
参考资料:
https://www.zhihu.com/question/280696035 知乎还是最好的资源,理论不错
https://zhuanlan.zhihu.com/p/76281678 知乎还是最好的资源,理论 加 代码
http://www.manongjc.com/article/59928.html 代码 + 理论
https://www.cnblogs.com/Bang-cansee/p/4954129.html 纯理论,板书很差
https://blog.csdn.net/weixin_33906657/article/details/86130660 时间序列异常检测算法S-H-ESD