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

如何基于pandas多模型异常检测结果生成统一异常概率得分列

无标注多模型异常检测结果融合实现方案

基础实现:等权投票占比法

无需引入额外工具,直接使用pandas自带方法即可实现,本质是计算每个样本被判定为异常的模型占比,结果可直接对应异常可能性,可解释性极强。
假设你的DataFrame中所有异常检测模型输出列的前缀为model_,可根据实际列名规则调整筛选逻辑,示例代码如下:

import pandas as pd

# 筛选所有模型输出列
model_cols = [col for col in df.columns if col.startswith('model_')]

# 生成0-1区间的异常得分
df['anomaly_score'] = df[model_cols].mean(axis=1)
# 如需百分比格式,可使用以下代码生成0-100的数值
df['anomaly_percent'] = (df[model_cols].mean(axis=1) * 100).round(1)

优化实现:加权投票法

如果已知不同模型在对应业务场景下的可信度差异,可给不同模型配置不同权重计算融合得分,权重可根据先验经验自定义,示例代码如下:

# 权重顺序与model_cols的列顺序对应,权重总和可自行调整
weights = [0.15, 0.25, 0.3, 0.3]
df['weighted_anomaly_score'] = df[model_cols].mul(weights, axis=1).sum(axis=1)

高阶实现:无监督集成算法

若需更专业的融合结果,可使用异常检测专用工具库pyod的集成方法,适配不同业务的漏检、误检容忍需求:

from pyod.models.combination import average, maximization, median

model_outputs = df[model_cols].values
# 平均融合:效果与等权投票法一致
df['avg_ensemble_score'] = average(model_outputs)
# 最大化融合:只要有一个模型判定异常就拉高得分,适合对漏检容忍度低的场景
df['max_ensemble_score'] = maximization(model_outputs)
# 中位数融合:降低少数极端模型输出的干扰,结果更稳定
df['median_ensemble_score'] = median(model_outputs)

选型建议

  • 普通业务场景优先使用等权投票占比法,实现简单、可读性最高
  • 有模型效果先验知识的场景使用加权投票法,融合结果更贴合业务需求
  • 科研或精度要求极高的场景可选用pyod的集成算法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:24:03