异常检测评价指标(输出修正)

异常检测输出修正

想要判断异常检测模型性能的好坏,我们需要将模型的输出数据和标签数据根据各种不同的评价指标做对比。然而,倘若我们直接用两者做对比,得分会比较低,并且也不符合实际情况。实际情况下,我们认为我们只要判断出连续异常点中的一个异常点,就可以认为找到了这一段异常点。因此,我们必须对异常检测的输出进行修正。

例子(0为正常,1为异常)

预测值为: [0 0 0 0 0 1 0 0 1]
标签值为: [0 1 1 0 1 1 1 0 0]
我们希望修正后的输出值为:[0 0 0 0 1 1 1 0 1]
加粗的1是我们修正加上去的。

程序如下

参考来源为 Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy 的源码

import numpy as np

def detection_adjustment(gt,pred):
    anomaly_state = False
    for i in range(len(gt)):
        if gt[i] == 1 and pred[i] == 1 and not anomaly_state:
            anomaly_state = True
            for j in range(i, 0, -1):
                if gt[j] == 0:
                    break
                else:
                    if pred[j] == 0:
                        pred[j] = 1
            for j in range(i, len(gt)):
                if gt[j] == 0:
                    break
                else:
                    if pred[j] == 0:
                        pred[j] = 1
        elif gt[i] == 0:
            anomaly_state = False
        if anomaly_state:
            pred[i] = 1

    pred = np.array(pred)
    gt = np.array(gt)
    return gt,pred
if __name__ == '__main__':
    gt=np.array([0,1,1,0,1,1,1,0,0])
    pred=np.array([0,0,0,0,0,1,0,0,1])
    gt,pred=detection_adjustment(gt,pred)
    print("pred: ", pred)
    print("gt:   ", gt)

修正后的标签符合预期

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值