赞
踩
metrics
介绍模块metrics
包含四种类型的评分函数,用于根据真实异常测量检测结果的质量。所有的评分函数都支持两种模式:
recall
,又名灵敏度、命中率或真阳性率 (TPR),是成功检测到的真异常的百分比。输入类型:
在以下示例中,有 13 个数据点是已知异常。检测结果中,13个中有9个检测成功。因此,召回分数等于 9/13。
在以下示例中,有 6 个异常事件(包括 3 个瞬时事件)。默认情况下,如果检测结果中包含不少于 50% 的段,则认为事件检测成功。在本例中,根据此设置检测前 4 个事件,未检测到后 2 个事件。因此,召回分数等于 4/6。
如果我们限制成功检测的标准,使得一个事件必须覆盖超过 90% 的时间段才能被视为成功检测,那么第三个事件就不是成功检测,因为只有一半的时间段被检测到,因此召回分数等于 3/6。
方法调用
adtk.metrics.recall(y_true, y_pred, thresh=0.5)
参数介绍
y_true(pandas Series or DataFrame, list, or dict) -- 真正异常的标签或列表。
y_pred(pandas Series or DataFrame, list, or dict) -- 预测异常的标签或列表。
thresh(float, optional) -- 命中的阈值。仅在输入为列表或字典时使用。默认值:0.5。
y_true和y_pred的输入格式:
(1) 如果是 pandas Series,则将其视为沿时间索引的二进制标签。
(2) 如果是 pandas DataFrame,每一列都是一个二进制序列,被视为一个独立的异常类型。
(3) 如果是列表,则为事件列表,如果事件是瞬时的,则为 pandas Timestamp;
如果是封闭时间间隔,则为 pandas Timestamp 的 2 元组。
(4) 如果是dict,则每个键值对都是一个事件列表,并被视为一种独立的异常类型。
precision
类似于recall
,不同之处在于它计算预测异常为真实异常的百分比。在某些情况下,它也称为阳性预测值 (PPV)。如果检测器过于宽容,recall
分数会很高,而分数会precision
很低。如果检测器太严格,recall
分数会很低,而分数会precision
很高。输入类型:
方法调用
adtk.metrics.precision(y_true, y_pred, thresh=0.5)
参数介绍
y_true(pandas Series or DataFrame, list, or dict) -- 真正异常的标签或列表。
y_pred(pandas Series or DataFrame, list, or dict) -- 预测异常的标签或列表。
thresh(float, optional) -- 命中的阈值。仅在输入为列表或字典时使用。默认值:0.5。
y_true和y_pred的输入格式:
(1) 如果是 pandas Series,则将其视为沿时间索引的二进制标签。
(2) 如果是 pandas DataFrame,每一列都是一个二进制序列,被视为一个独立的异常类型。
(3) 如果是列表,则为事件列表,如果事件是瞬时的,则为 pandas Timestamp;
如果是封闭时间间隔,则为 pandas Timestamp 的 2 元组。
(4) 如果是dict,则每个键值对都是一个事件列表,并被视为一种独立的异常类型。
f1_score
是precision
和recall
的调和平均值。输入类型:
方法调用
adtk.metrics.f1_score(y_true, y_pred, recall_thresh=0.5, precision_thresh=0.5)
参数介绍
y_true(pandas Series or DataFrame, list, or dict) -- 真正异常的标签或列表。
y_pred(pandas Series or DataFrame, list, or dict) -- 预测异常的标签或列表。
recall_thresh(float, optional) -- 召回计算的阈值。仅在输入为列表或字典时使用。默认值:0.5。
precision_thresh(float, optional) -- 精度计算的阈值。仅在输入为列表或字典时使用。默认值:0.5。
y_true和y_pred的输入格式:
(1) 如果是 pandas Series,则将其视为沿时间索引的二进制标签。
(2) 如果是 pandas DataFrame,每一列都是一个二进制序列,被视为一个独立的异常类型。
(3) 如果是列表,则为事件列表,如果事件是瞬时的,则为 pandas Timestamp;
如果是封闭时间间隔,则为 pandas Timestamp 的 2 元组。
(4) 如果是dict,则每个键值对都是一个事件列表,并被视为一种独立的异常类型。
iou
计算了两个列表中都被识别为异常的时间段与两个列表中至少一个列表中识别为异常的时间段之间的长度比。输入类型:
在前面的示例中,真正异常段与检测到的段之间的并集为 13 天,而相交为 3 天。因此 IoU 得分为 3/13。
方法调用
adtk.metrics.f1_score(y_true, y_pred, recall_thresh=0.5, precision_thresh=0.5)
参数介绍
y_true(pandas Series or DataFrame, list, or dict) -- 真正异常的标签或列表。
y_pred(pandas Series or DataFrame, list, or dict) -- 预测异常的标签或列表。
y_true和y_pred的输入格式:
(1) 如果是 pandas Series,则将其视为沿时间索引的二进制标签。
(2) 如果是 pandas DataFrame,每一列都是一个二进制序列,被视为一个独立的异常类型。
(3) 如果是列表,则为事件列表,如果事件是瞬时的,则为 pandas Timestamp;
如果是封闭时间间隔,则为 pandas Timestamp 的 2 元组。
(4) 如果是dict,则每个键值对都是一个事件列表,并被视为一种独立的异常类型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。