专栏首页大数据智能实战离群点异常检测及可视化分析工具pyod测试

离群点异常检测及可视化分析工具pyod测试

找到了一个对Outlier Detection (Anomaly Detection) 异常值检测(异常检测)的比较好的工具(https://github.com/yzhao062/Pyod),该工具集成了多个算法。

具体包括的算法如下:

Model 1 Angle-based Outlier Detector (ABOD) Model 2 Cluster-based Local Outlier Factor (CBLOF) Model 3 Feature Bagging Model 4 Histogram-base Outlier Detection (HBOS) Model 5 Isolation Forest Model 6 K Nearest Neighbors (KNN) Model 7 Average KNN Model 8 Median KNN Model 9 Local Outlier Factor (LOF) Model 10 Minimum Covariance Determinant (MCD) Model 11 One-class SVM (OCSVM) Model 12 Principal Component Analysis (PCA)

这些算法主要都是无监督的方式来实现的异常离群点值检测的方法。

该库提供了这些算法的多种测试例子,如下为ABOD算法的测试结果。

同时也提供了对所有算法的比较:

其核心代码如下:

for i, (clf_name, clf) in enumerate(classifiers.items()):
        print()
        print(i + 1, 'fitting', clf_name)
        # fit the data and tag outliers
        clf.fit(X)
        scores_pred = clf.decision_function(X) * -1
        y_pred = clf.predict(X)
        threshold = stats.scoreatpercentile(scores_pred,
                                            100 * outliers_fraction)
        n_errors = (y_pred != ground_truth).sum()
        # plot the levels lines and the points

        Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()]) * -1
        Z = Z.reshape(xx.shape)
        subplot = plt.subplot(3, 4, i + 1)
        subplot.contourf(xx, yy, Z, levels=np.linspace(Z.min(), threshold, 7),
                         cmap=plt.cm.Blues_r)
        a = subplot.contour(xx, yy, Z, levels=[threshold],
                            linewidths=2, colors='red')
        subplot.contourf(xx, yy, Z, levels=[threshold, Z.max()],
                         colors='orange')
        b = subplot.scatter(X[:-n_outliers, 0], X[:-n_outliers, 1], c='white',
                            s=20, edgecolor='k')
        c = subplot.scatter(X[-n_outliers:, 0], X[-n_outliers:, 1], c='black',
                            s=20, edgecolor='k')
        subplot.axis('tight')
        subplot.legend(
            [a.collections[0], b, c],
            ['learned decision function', 'true inliers', 'true outliers'],
            prop=matplotlib.font_manager.FontProperties(size=10),
            loc='lower right')
        subplot.set_xlabel("%d. %s (errors: %d)" % (i + 1, clf_name, n_errors))
        subplot.set_xlim((-7, 7))
        subplot.set_ylim((-7, 7))

运行比较结果如下,可以看出用等值区域法填充的可视化结果可以较好地展现各种不同算法的比较。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Andrew Ng的《Machine Learning Yearning》中六个重要概念

    Andrew NG是计算机科学家,执行官,投资人,企业家,也是人工智能领域的领先专家之一。 他是百度的前任副总裁兼首席科学家,是斯坦福大学的兼职教授,是最受欢迎...

    AI研习社
  • DeepMind综述深度强化学习中的快与慢,智能体应该像人一样学习

    DeepMind 研究者近期在 Trends In Cognitive Sciences 期刊上发表文章,概览了深度强化学习中的一些新技术,这些技术旨在弥补强化...

    机器之心
  • TensorFlow系列专题(十四): 手把手带你搭建卷积神经网络实现冰山图像分类

    这里我们要解决的任务是来自于Kaggle上的一道赛题(https://www.kaggle.com/c/statoil-iceberg-classifier-c...

    磐创AI
  • 干货 | 如何学习SVM(支持向量机)以及改进实现SVM算法程序

    AI 科技评论按,本文为韦易笑在知乎问题如何学习SVM(支持向量机)以及改进实现SVM算法程序下面的回复,AI 科技评论获其授权转载。

    AI科技评论
  • 使用概率编程和Pyro进行财务预测

    今天我会用略微不同的方法拟合之前的算法。从概率角度进行处理,通过数据本身进行正则化,估计预测的确定性,使用较少的数据,将概率依赖引入到模型中。这里主要讲概况,我...

    AI研习社
  • Facebook发布PyTorch 1.1,开源AI模型优化简化工具BoTorch & Ax

    Facebook F8 大会主要面向围绕该网站开发产品和服务的开发人员及企业家,大会通常包括主题演讲以及 Facebook 新产品、新工具的发布。其名称源自 F...

    机器之心
  • 博客 | 常见近30种NLP任务的练手项目

    还有一个原因,周末了,我发现大部分人周五晚上开始到周一上午都不看技术相关的内容,今天本来不打算发,但是被催更,那就发点不用过多思考的实践类的吧。如果精力充沛或是...

    AI研习社
  • 危险!一张贴画就能迷惑AI,对抗补丁或让自动驾驶车毁人亡

    来自北京航空航天大学(Beihang University)、悉尼大学(University of Sydney)和剑桥大学(University of Cam...

    新智元
  • 仅用200个样本就能得到当前最佳结果:手写字符识别新模型TextCaps

    由于深度学习模型近期取得的进展,对于许多主流语言来说,手写字符识别已经是得到解决的问题了。但对于其它语言而言,由于缺乏足够大的、用来训练深度学习模型的标注数据集...

    机器之心
  • 不负其名OpenAI,GPT-2模型阶段性公布……

    几个月前,OpenAI 发布了强大的通用语言模型 GPT-2,而在宣布这个好消息没多久之后,它又宣布要与开源「say goodbye」。理由是:GPT-2 太好...

    机器之心

扫码关注云+社区

领取腾讯云代金券