PyOD异常检测库

本文介绍了如何使用Python库PyOD进行异常检测,特别是关注KNN算法的应用。通过fit方法训练检测器,然后利用decision_function和predict方法对训练数据和未知数据进行异常评分和分类。此外,还展示了评估预测结果和可视化分析的步骤。
摘要由CSDN通过智能技术生成

PyOD 提供的异常检测算法如下:

 异常检测算法多数为无监督学习,只需要X(输入数据),不需要y(标签)。PyOD 的使用方法与 Sklearn 的聚类分析很像,检测器(detector)有统一的API。完整的API使用可参考API CheatSheet - pyod 0.6.8 documentation

  • fit(X): 用数据X来“训练/拟合”检测器clf。即在初始化检测器clf后,用X来“训练”它。
  • fit_predict_score(X, y): 用数据 X 来训练检测器 clf,预测 X 的值,在真实标签 y 上进行评估。此处的 y 只是用于评估,而非训练
  • decision_function(X): 在检测器 clf 被fit后,可通过该函数预测未知数据的异常程度,返回值为原始分数,并非0和1,返回分数越高,则该数据点的异常程度越高
  • predict(X): 在检测器clf被 fit 后,可通过该函数来预测未知数据的异常标签,返回值为二分类标签(0为正常点,1为异常点)
  • predict_proba(X): 在检测器clf被fit后,预测未知数据的异常概率,返回该点是异常点概率

当检测器clf被初始化且fit(X)函数被执行后,clf 会生成两个重要的属性:

  • decision_scores: 数据X上的异常打分,分数越高,则该数据点的异常程度越高
  • labels_: 数据X上的异常标签,返回值为二分类标签(0为正常点,1为异常点)

初始化检测器 clf 后,可直接用数据 X 来训练,得到 X 的异常分值(clf.decision_scores)以及异常标签(clf.labels_)。clf 被训练后(当fit函数被执行后),使用decision_function()和predict()函数来对未知数据进行训练。

使用实例:

from pyod.models.knn import KNN   # imprt kNN分类器

# 训练一个kNN检测器
clf_name = 'kNN'
clf = KNN() # 初始化检测器clf
clf.fit(X_train) # 使用X_train训练检测器clf

# 返回训练数据X_train上的异常标签和异常分值
y_train_pred = clf.labels_  # 返回训练数据上的分类标签 (0: 正常值, 1: 异常值)
y_train_scores = clf.decision_scores_  # 返回训练数据上的异常值 (分值越大越异常)

# 用训练好的clf来预测未知数据中的异常值
y_test_pred = clf.predict(X_test)  # 返回未知数据上的分类标签 (0: 正常值, 1: 异常值)
y_test_scores = clf.decision_function(X_test)  #  返回未知数据上的异常值 (分值越大越异常)
# 评估预测结果
print("\nOn Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)

# 可视化
visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
    y_test_pred, show_figure=True, save_figure=False)

参考:

用PyOD工具库进行「异常检测」 - 知乎 (zhihu.com)

GitHub - yzhao062/pyod: (JMLR' 19) A Python Toolbox for Scalable Outlier Detection (Anomaly Detection)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列异常点检测是指通过对时间序列数据进行分析,识别出其中的异常点,即与正常数据波动规律有显著差异的数据点。对于时间序列异常点检测任务,Python提供了多种和算法。 一种常用的Python是`statsmodels`,它是一个强大的统计分析,可以用于时间序列的建模和分析。其中的`outliers_influence`模块提供了许多用于异常点检测的统计方法和函数,例如`OLSInfluence`类可以通过计算残差、杠杆值和学生化残差等指标来检测异常点。 另一个常用的Python是`pyculiarity`,它是基于R语言遗留的`anomalize`开发的,用于时间序列异常检测和异常值替换。`pyculiarity`包含了一系列的异常检测算法,例如`esd_test`可以基于指数平滑分解(Exponential Smoothing Decomposition)检测异常点。 此外,还有一些用于时间序列异常点检测的专用,如`anomaly_detection`和`pyod`。`anomaly_detection`提供了多种统计和机器学习方法,如基于均值和标准差的Z分数法、基于百分位数的箱线图法和基于自动编码器的深度学习方法等。`pyod`是一个专门用于异常检测,提供了多种经典和先进的异常检测算法,包括基于聚类的LOF算法、基于距离的KNN算法和基于孤立森林(Isolation Forest)的算法等。 总之,Python提供了多种用于时间序列异常点检测的和算法,可以根据具体需求选择合适的方法进行异常点检测和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值