本篇博客的目的:記錄 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