You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于pandas列信号数据计算异常检测器性能指标的方法

异常检测器性能评估计算方案

标签对齐规则

首先对每个采样点的真值和预测结果做二元标签映射,完全匹配你给出的判定规则:

  • 真值标签:rr_manually_cleaned为NaN时标记为正例(真异常),非NaN时标记为负例(真正常)
  • 预测标签:rr_filtered为NaN时标记为预测正例(判定为异常),非NaN时标记为预测负例(判定为正常)

基础混淆矩阵项计算

四个核心统计项可以直接基于上述两个标签列计算:

  • TP(真正例,正确检出的异常):真值、预测均为NaN的样本数
  • TN(真负例,正确保留的正常点):真值、预测均为非NaN的样本数
  • FP(假正例,误检):匹配你给出的定义,即真值非NaN、预测为NaN的样本数
  • FN(假负例,漏检):匹配你给出的定义,即真值为NaN、预测非NaN的样本数

混淆矩阵生成

完全可以直接基于现有数据生成标准2分类混淆矩阵,只需要用两个二元标签列做交叉统计即可,示例代码如下:

import pandas as pd
# 生成二元标签列
df['y_true_anomaly'] = df['rr_manually_cleaned'].isna()
df['y_pred_anomaly'] = df['rr_filtered'].isna()
# 生成混淆矩阵,行是真实标签,列是预测标签
confusion_matrix = pd.crosstab(
    df['y_true_anomaly'], 
    df['y_pred_anomaly'],
    rownames=['真实标签'],
    colnames=['预测标签'],
    margins=True
)
print(confusion_matrix)

核心性能指标计算

所有指标都基于上述四个基础项计算:

  • 精确率(Precision):衡量检测器的误检概率,即所有被判定为异常的样本中,真异常的占比
    公式:Precision = TP / (TP + FP),值越高说明误判正常点为异常的概率越低
  • 召回率(Recall/查全率):衡量检测器的漏检概率,即所有真实异常中,被成功检出的占比
    公式:Recall = TP / (TP + FN),值越高说明漏检的异常越少
  • F1分数:精确率和召回率的调和平均数,平衡两者的综合性能指标
    公式:F1 = 2 * (Precision * Recall) / (Precision + Recall),取值范围0~1,越接近1性能越好
  • 可选指标-准确率(Accuracy):所有样本中判断正确的占比,仅适用于正常、异常样本比例均衡的场景
    公式:Accuracy = (TP + TN) / (TP + TN + FP + FN)

批量计算完整示例

# 计算四个基础项的计数
TP = ((df['y_true_anomaly'] == True) & (df['y_pred_anomaly'] == True)).sum()
TN = ((df['y_true_anomaly'] == False) & (df['y_pred_anomaly'] == False)).sum()
FP = ((df['y_true_anomaly'] == False) & (df['y_pred_anomaly'] == True)).sum()
FN = ((df['y_true_anomaly'] == True) & (df['y_pred_anomaly'] == False)).sum()

# 计算指标(加除零保护)
precision = TP / (TP + FP) if (TP + FP) !=0 else 0
recall = TP / (TP + FN) if (TP + FN) !=0 else 0
f1 = 2 * precision * recall / (precision + recall) if (precision + recall) !=0 else 0
accuracy = (TP + TN) / len(df)

内容的提问来源于stack exchange,提问作者Ossz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:45:10