一个用于异常检测的紧凑的Python工具箱。

anomatools的Python项目详细描述


anomatools是一个小Python包,包含最近的异常检测算法。 异常检测致力于从给定(大型)数据集中检测异常异常数据点。 该软件包包含两种最先进的(2018年和2020年)半监督和两种非监督异常检测算法。在

安装

使用以下命令直接从PyPi安装包:

pip install anomatools

或者使用setup.py文件安装包:

^{pr2}$

或者直接从GitHub自身安装:

pip install git+https://github.com/Vincent-Vercruyssen/anomatools.git@master

内容及用途

半监督异常检测

给定一个具有属性X和标签Y的数据集,该数据集指示数据点是normal还是{em1}$异常,半监督异常检测算法使用所有实例^{str1}$X和一些标签{em1}$Y训练。 半监督异常检测方法通常优于无监督方法,因为它们可以使用标签信息来修正无监督检测过程所依据的假设。 anomatools包实现了两种最新的半监督异常检测算法:

  1. SSDO离群值半监督检测)算法首先计算一个无监督的先验异常分数,然后用已知的标签信息修正该分数[1]。在
  2. SSkNNO半监督k近邻异常检测)算法是著名的kNN分类器和kNNO(k-最近邻离群值检测)方法的组合[2]。在

给定一个训练数据集X_train,标签为Y_train,以及一个测试数据集X_test,算法的应用如下:

fromanomatools.modelsimportSSkNNO,SSDO# traindetector=SSDO()detector.fit(X_train,Y_train)# predictlabels=detector.predict(X_test)

同样,也可以计算X_检验中每个点正常或异常的概率:

probabilities=detector.predict_proba(X_test,method='squash')

有时我们对检测培训数据中的异常感兴趣(例如,当我们进行事后分析时):

# traindetector=SSDO()detector.fit(X_train,Y_train)# predictlabels=detector.labels_

无监督异常检测:

当检测数据集中的异常时,无监督异常检测器不使用标签信息(用户反馈)。给定一个具有属性X和标签Y的数据集,无监督检测器仅使用X进行训练。 anomatools包实现了两种最新的半监督异常检测算法:

  1. kNNOk-最近邻离群值检测)算法计算每个数据点的异常分数,作为到数据集[3]中k-最近邻居的距离。在
  2. iNNEisolation nearest neighbor ensembles)算法根据每个数据点与其余数据的隔离程度大致计算异常分数[4]。在

给定一个训练数据集X_train,标签为Y_train,以及一个测试数据集X_test,算法的应用如下:

fromanomatools.modelsimportkNNO,iNNE# traindetector=kNNO()detector.fit(X_train,Y_train)# predictlabels=detector.predict(X_test)

包装结构

异常检测算法位于:anomatools/models/

有关如何使用这些算法的更多示例,请参阅笔记本:anomatools/notebooks/

依赖关系

anomatools包需要安装以下python包:

联系人

请与包的作者联系:vincent.vercruyssen@kuleuven.be

参考文献

[1]Vercruyssen,V.,Meert,W.,Verbruggen,G.,Maes,K.,Bäumer,R.,Davis,J.(2018)半监督异常检测及其在水分析中的应用。IEEE国际数据挖掘会议(ICDM),Sin盖博。p527--536页。在

[2]Vercruyssen,V.,Meert,W.,Davis,J.(2020)$通过局部和无监督实例选择进行异常检测的转移学习。美国人工智能协会人工智能会议,纽约。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:字符串。RTL设备语言用标志“+”格式化,数字后加符号   java GAE作为桌面应用程序(Swing)的服务提供商   java将InputStream转换为FileInputStream不适用于Apache POI   java外部Voronoi库“网格”:什么是草图和处理?   重载重写的泛型方法java   java显示组织上设置的错误。springframework。验证。jsp中的错误对象   java一些Spring模型属性没有显示在我的JSP中   java无法编译Guava 23的SimpleTimeLimiter示例   java如何更改JTree中的“根”目录名?   java如何在安卓中对相对布局产生连锁反应?   java错误:org。冬眠例外SQLGrammarException:无法提取结果集,dateAccessed是未知列   如何使用java监听JSON文件更新   由抽象封闭类创建的匿名内部类能否通过反射确定实现类?