时序数据分析——异常检测

网友投稿 848 2022-05-30

时序数据的异常点是指序列中存在模式不一致的点(如时序数据超出正常范围的上/下界,突然的上升或下降,趋势改变)。时序数据的异常检测旨在快速准确的找到这些异常点。

代码块导入

在NAIE训练平台的JupyterLab界面操作,不需要手动添加这一部分,因为在新创建的特征工程下已经包含了导入代码。

import os os.chdir("/home/ma-user/work/test_anomaly_detection_noah") from naie.context import Context as context from naie.datasets import data_reference from naie.feature_processing import data_flow from naie.feature_analysis import data_analysis from naie.feature_processing.expression import col, cols, cond, f_and, f_not, f_or from naie.common.data.typedefinition import StepType, ColumnRelationship, JoinType, ColumnSelector,DynamicColumnsSelectorDetails, StaticColumnsSelectorDetails, ColumnsSelectorDetails, DataProcessMode

数据准备 - 选择数据1

在NAIE平台上,点击菜单栏中“数据集”下的“选择数据”生成,然后填写对应数据集和数据集实例参数即可。

也可以直接调用提供的生成样例数据的代码来生成突变类异常样例数据。

时序数据分析——异常检测

dataset = 'air' dataset_entity = 'ts_data_analysis' datareference = data_reference.get_data_reference(dataset, dataset_entity) dataflow = data_flow.create_data_flow(datareference)

1. 超出正常范围上/下界

检测平稳的时序数据时序数据是否异常,给出异常判断参考区间

参数:

data: 时序数据,可以是dataframe,数据路径或者dataflow

columns: 待进行时序数据分析的目标列,list类型

id_column: 代表时序数据id列,没有id列则使用默认值None,即认为整个数据为同一个id下的数据

time_column: 时序数据的时间列,用来对数据进行排序的列。没有时间列则使用默认值None. 如果不为None,则会根据给定的时间列对时序数据排序

method: 获取用于判断时序数据异常的上/下界的方法,'boxplot', '3sigma’, 'and', 'or'可选;其中'and', 'or'分别表示前面二者获取区间的交集,并集

返回:

时序数据的参考正常范围

from naie.ts_data_analysis import AnomalyDetection

ad = AnomalyDetection(data=dataflow, columns=['col_1', 'col_2', 'col_3', 'col_4', 'col_5'], id_column='id', time_column=None) result = ad.fit(method='boxplot') # result = ad.anomaly_detection(method='3sigma') # result = ad.anomaly_detection(method='and') # result = ad.anomaly_detection(method='or') print('Anomaly detection: ') result

Anomaly detection:

Out[5]:

数据准备 - 选择数据2

dataset = 'ts_data' dataset_entity = 'ts_anomaly' datareference = data_reference.get_data_reference(dataset, dataset_entity) dataflow = data_flow.create_data_flow(datareference)

# 获取数据的另一方法,生成突变类异常样例数据 from naie.feature_analysis.data_generator import generate_mutation_data df = generate_mutation_data()

2. 突然的上升或下降

检测平稳的时序数据中突增或突降的点

参数:

top_n: 指定需要找到多少个突变点(结果可能少于这个值),整型,默认5

period_decomposition: 如果是周期数据,是否进行周期分解,增强数据的差异性, True或False,默认False

length_per_period: 如果进行周期分解,则需输入此参数,即一个周期内的数据量,整型,默认None

threshold_filtering: 是否对筛选出的top n个点进行二次过滤,True或False, 默认False即不过滤

threshold: 如果对筛选出的top n个点进行二次过滤,则需输入此参数作为过滤阈值,小于阈值的即认为是突变点,浮点型,默认None

返回:

最可能是突变的点的索引

from naie.ts_data_analysis import MutationAnomalyDetection

mad = MutationAnomalyDetection(df, columns=['F_x'], id_column='id', time_column=None) res = mad.fit(top_n=5, period_decomposition=False, length_per_period=None, threshold_filtering=False, threshold=None) print("Mutation anomaly detection: ") res

Mutation anomaly detection:

import matplotlib %matplotlib inline

mad._plot_mutation_anomaly(res)

NAIE SDK帮助文档汇总请参考:

数据挖掘

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:软件测试所需要掌握的技能
下一篇:华为云开发者工具集,轻松玩转应用开发
相关文章