Python异常检测工具箱——pyod
作者:互联网
最近打算入坑异常检测,准备先从应用开始,先尝试着用一下相关的工具和算法,有一个直观的感受,然后再从应用的过程中寻找切入点,逐步了解相关的理论和模型。pyod就是一个非常符合我当下需求的一个工具箱,其中集成了从经典模型到新兴算法的数十种异常检测算法与模型,因此在这里先对他进行了一个大致的了解。
- 简介:
- pyod(Python Outlier Detection)是一个集成了30余种异常检测方法和模型的Python工具箱。从经典的 LOF (SIGMOD 2000) 到近两年的 COPOD (ICDM 2020) 和 SUOD (MLSys 2021) 。
- 特性:
- 丰富的模型,从 scikit-learn 中的经典算法,到近期的深度学习算法,以及诸如 COPOD 的新兴算法。
- 兼容 Python2 和 Python3。
- pyod对所涵盖的各种异常检测算法提供了统一的API,便于学习和使用。
- 范例:
# 训练 COPOD 模型
from pyod.models.copod import COPOD
clf = COPOD()
clf.fit(X_train)
# 查看数据的异常分数
y_train_scores = clf.decision_scores_ # 训练集
y_test_scores = clf.decision_function(X_test) # 测试集
- 安装:
- pip安装:
pip install pyod # 安装pyod pip install --upgrad pyod # 更新pyod(非必须)
- conda安装:
conda install -c conda-forge pyod
- 从git安装
git clone https://github.com/yzhao062/pyod.git cd pyod pip install .
- 可选择安装的依赖(特定模型需要)
- combo(models/combination.py 和 FeatureBagging 需要)
- keras(AutoEncoder以及其他的深度学习模型需要)
- tensorflow(同上)
- suod(SUOD模型需要)
- xgboost(XGBOD需要)
- 各模型通用的API(全部API参见此处):
- fit(X): 训练模型。
- decision_function(X): 用训练好的模型预测 X。 的异常得分(raw anomaly score)
- predict(X): 用训练好的模型预测某个特定的样本 X 是否为异常样本。
- predict_proba(X):
- 训练好的模型的常用属性:
- decision_scores_: 训练集样本的异常得分(outlier scores),得分越高的样本越有可能是异常样本。
- labels_: 训练集样本的标签,0 代表正常样本,1 代表异常样本。
- 模型的保存与加载:
# 保存模型
dump(clf, 'clf.joblib')
# 加载模型
clf = load('clf.joblib')
# 加载后得到的 clf 可以直接调用上述 API 进行使用
y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test) # outlier scores
- 使用 SUOD 框架进行快速训练
- 对pyod中所包涵的模型,可以使用 SUOD 框架对多个模型进行快速训练以及联合预测,详见SUOD 论文
from pyod.models.suod import SUOD # 初始化一组异常检测模型 detector_list = [LOF(n_neighbors=15), LOF(n_neighbors=20), LOF(n_neighbors=25), LOF(n_neighbors=35), COPOD(), IForest(n_estimators=100), IForest(n_estimators=200)] # 设定并行进程的数量(n_jobs=2),以及联合预测的方式(combination='average') clf = SUOD(base_estimators=detector_list, n_jobs=2, combination='average', verbose=False) # 之后就可以把 clf 当做一个常规的模型,调用API进行训练和预测 clf.fit(X_train) y_test_pred = clf.predict(X_test) y_test_scores = clf.decision_function(X_test)
标签:SUOD,Python,clf,scores,test,工具箱,pyod,模型 来源: https://blog.csdn.net/FANFANHEBAOER/article/details/121895971