异常检测 - 方法汇总 与 grubbs test

本篇博客的目的:记录 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

你可能感兴趣的:(异常检测 - 方法汇总 与 grubbs test)