Statistical Outlier Detector 统计与机器学习异常值检测 Skill
功能概述
本skill用于结构化表格数据的离群值检验,支持统计阈值、机器学习和分组一致性三类方法。 它既能识别全局分布中的异常值,也能识别按分组字段计算后的组内偏离点。 它适合实验对比数据、分类统计数据、传感器数值表等需要数值一致性检查的场景。 它不负责固定业务上下限校验、枚举词典校验或时间序列完整性校验。
触发条件
当用户请求以下任务时,应使用此skill:
- 异常值检测 / 离群值检测
- IQR / Z-score / 四分位距 / 标准差阈值识别
- Isolation Forest / 孤立森林异常识别
- 按实验组、分类组、批次组检查数值一致性
- 组内均值偏离超过标准差倍数的异常标记
核心参数说明
必需参数
--input:输入文件路径--output:输出文件路径
可选参数
--columns:要检测的数值字段,逗号分隔;留空时自动使用所有数值字段--method:检测方法,默认iqr--threshold:IQR倍数或标准差倍数,默认1.5--contamination:IsolationForest异常比例,默认0.05--group_columns:分组字段,group_zscore方法必填--action:处理方式,默认mark
输入文件格式
支持 CSV、TSV、Excel(.xls / .xlsx)、JSON、JSONL。
columns 中指定的字段会先转换为数值列后再进行检测;无法转换为数值的值会被视为缺失。
group_columns 仅在分组一致性模式下使用,分组字段本身不参与数值检测。
使用方法
IQR方法检测
python scripts/run_statistical_outlier_detector.py \
--input data.csv \
--output result.csv \
--columns "value,score" \
--method iqr \
--threshold 1.5 \
--action mark
Z-score方法检测
python scripts/run_statistical_outlier_detector.py \
--input data.csv \
--output result.csv \
--columns "value" \
--method zscore \
--threshold 3.0 \
--action remove
IsolationForest方法检测
python scripts/run_statistical_outlier_detector.py \
--input data.csv \
--output result.csv \
--columns "value,score" \
--method isolation_forest \
--contamination 0.1 \
--action mark
分组一致性检测
python scripts/run_statistical_outlier_detector.py \
--input data.csv \
--output result.csv \
--columns "value" \
--group_columns "experiment,treatment" \
--method group_zscore \
--threshold 2.0 \
--action mark
输出示例
[OK] Outlier detection completed!
Input file: data.csv
Output file: result.csv
Columns: value, score
Method: group_zscore
Threshold: 2.0
Group columns: experiment, treatment
Action: mark
Total rows: 1000
Total outlier rows: 62
环境要求
pip install pandas scipy scikit-learn
注意事项
iqr、zscore、group_zscore支持mark、remove、clip,isolation_forest仅支持mark和remove。group_zscore需要提供group_columns,否则无法计算组内均值和标准差。columns为空时会自动选择所有数值列,但仍会忽略无法转为数值的字段。mark模式会新增is_outlier和字段级异常标记列;remove模式会删除异常行;clip模式会截断异常数值。- 这是统一的离群检验 skill,不再拆分为独立的机器学习异常行检测 skill。