基于分布的时间序列异常检测。

fossa的Python项目详细描述


PyPI-StatusPyPI-VersionsBuild-StatusCodecovLICENCE

基于分布的时间序列数据异常检测。

>>>fromfossaimportLastWindowX2AnomalyDetector>>>clf=LastWindowX2AnomalyDetector(p_threshold=0.005,normalize=True)>>>clf.fit(historic_data_df)>>>clf.predict(new_data)directiondatecategory2018-06-01hockey1.0footbal0.0soccer-1.0tennis0.0

1   Installation

pip install fossa

2   Features

  • scikit-learn-类分类器api。
  • 可pickle的分类器对象。
  • 纯Python。
  • 支持Python3.5+。
  • 全面测试。

4   Use

4.1   Data Format

所有异常检测器被设计为接收具有两个级别的多索引的适合参数A^ {TT2}$DATAFRAME,每个窗口的第一索引时间和第二索引类别/主题频率,以及数字dType的单个列,给出所述频率。

当检测到趋势时,会返回一个包含检测结果的类似索引数据帧,给出每个时间窗口和类别的检测到的趋势。

4.2   API

fossa中的所有异常检测器对象都具有相同的api:

  • fit-接收要训练的时间窗口分布的历史,并将检测器放在上面(具体格式请参见Data Format部分)。类别集可能在不同的时间窗口或历史和时间窗口之间不同,以便进行检测;检测是为了在所有委员会和新的时间窗口上合并类别。
  • partial_fit-与fit相同,但也可以递增地适合已经适合的检测器,而不必忽略所有过去适合的数据。调用此方法时,不支持增量拟合的检测器将引发NotImplementedError异常。
  • detect_trends-接收一个新的数据帧(格式正确),并在其中的每个时间窗口中检测每个类别的趋势。除了指示趋势方向的direction列(下行趋势为-1,无趋势为0,上行趋势为1)之外,返回的数据帧还可能包含详细说明检测可信度或概率的其他列,如p值或提交的投票结果。
  • predict-类似于detect_trends,但返回的数据帧始终只包含检测到的趋势方向的一列。

4.3   Anomaly Detectors

卡方检测器

这一系列异常检测器的工作原理都是相似的:每个检测器都将新的时间窗口与一组表示其对相关历史和数据特征行为的想法的组合窗口进行比较;一个检测器可能在几个星期内查看同一工作日的同一小时,而另一个检测器可能查看最后的10天或20天,或是几个小时。

对于给定给detect_trendspredict方法的每个时间窗口,将为窗口中的每个类别生成一对所有分布(并且可能是标准化的,具体取决于特定检测器及其初始化参数)。然后,对于每个分布,在每个提交时间窗口中,在其与相应分布之间执行卡方检验。每个委员会成员对是否检测到趋势进行“投票”,并通过一些预先设置的投票规则(例如,多数票)生成决策。

5   Contributing

当前的软件包维护人员(也是作者之一)是shay palachy(shay.palachy@gmail.com);非常欢迎您向他寻求帮助。捐款是非常受欢迎的。

5.1   Installing for development

克隆:

git clone git@github.com:shaypal5/fossa.git

以开发模式安装,包括测试依赖项:

cd fossa
pip install -e '.[test]'

5.2   Running the tests

要运行测试,请使用:

cd fossa
pytest
5.3   Adding documentation

这个项目是用numpy docstring conventions来记录的,之所以选择它们,是因为它们可能是最广泛传播的约定,它们都得到了sphinx等常用工具的支持,并产生了人类可读的docstring。在记录添加到此项目中的代码时,请遵循these conventions

另外,如果您更新了这个README.rst文件,请使用python setup.py checkdocs验证它的编译。

6   Credits

由谢帕拉奇(shay.palachy@gmail.com)和欧姆里门德尔创作。

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

推荐PyPI第三方库


热门话题
java Android Espresso如何检查字符串是否缩写   java jar从cmd写入文件,但不能双击   Grails中的java onetomany映射|我可以在复合键中使用生成的值吗?   java HttpsURLConnection在尝试添加Cookie时已连接   java在Netbeans中不能有同名的包和类   如何在格式化字段自动更改无效输入(Swing)Java时触发事件   用户输入后java JTextArea未更新   java试图用新字符替换字符串中的特定字符   java类加载器在Linux上显示错误路径   java mySQL远程数据库未连接   java如果接口需要MyObject对象,如何返回错误对象?   java无法解析在MainActivity之外调用安卓类时的符号   java如何将应用程序文件正确添加到appium所需的功能?   Java中浮点数组的数据对齐算法