18922397810 b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
..
data b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
datasets_789 b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
datasets_789_6h b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
datasets_vibration_789 b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
datasets_vibration_789_6h b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
models_789 b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
models_789_6h b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
models_vibration_789 b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
models_vibration_789_6h b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
README.md b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
RESULTS_789_GENERALIZED.md b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
RESULTS_789_VIBRATION.md b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
__init__.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
build_datasets.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
evaluate_model.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
generalized_features.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
generalized_features_vibration.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
infer_and_combine.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
split_datasets.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
train_model.py b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
实时联合诊断方案.md b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago
跨机组泛化与样本扩充方案.md b58299d54e 本地备份:泛化模型(压力/振动)与文档、功图前调研 3 weeks ago

README.md

PKS 泛化模型(7/8/9 号机,机组相对特征)

本目录是 7/8/9 号机压力与振动的泛化模型,两者互相独立:分别建特征、分别训练、分别评估,互不影响。

核心思路:绝对油压/振动值各机组不同,直接混合训练会把一台机组的正常水平当成另一台机组的异常。因此去掉绝对特征,改用机组相对(泛化)特征:

  • 压力:窗口内相对 + 相对本机周期基线(周期前 3 天)+ 相对近期 24h 基线 + 回撤/连续下降 + 机组 z 分数。
  • 振动:相对本机近期 7×24 小时稳健基线(与扫描器口径一致,跨停机周期取历史)的偏离与比例 + 机组 z 分数 + 报警比例。
  • 机组基准(*_z 的 median/MAD)只用 train 划分的正常窗口计算,存 models/*_unit_baselines.json;每台机组在 train 中必须有正常事件组,否则报错。

详见 RESULTS_789_GENERALIZED.md(压力)、RESULTS_789_VIBRATION.md(振动)、跨机组泛化与样本扩充方案.md(方案)、实时联合诊断方案.md(实时接入)。

目录

  • build_datasets.py:样本构建,支持 --window-hours、--model-types、--units、--hourly-csv(复用中间表不查库)。
  • split_datasets.py:按事件组切分,支持 --split-ratios、--seed、--positive-basis。
  • generalized_features.py:压力泛化特征。
  • generalized_features_vibration.py:振动泛化特征。
  • train_model.py:训练并保存机组基准(按 model_type 选择特征模块)。
  • evaluate_model.py:留出测试,输出两类指标与分机组误报率。
  • infer_and_combine.py:规则联合辅助输出。
  • data/hourly.csv:7/8/9 小时级中间表(含油压与振动列),供 --hourly-csv 复用。
  • datasets_789/、models_789/:压力 3h;datasets_789_6h/、models_789_6h/:压力 6h 对照。
  • datasets_vibration_789/、models_vibration_789/:振动 3h;datasets_vibration_789_6h/、models_vibration_789_6h/:振动 6h 对照。

压力复现

# 1. 重建 3h 样本(重叠即异常,复用中间表不查库)
python backend/model_assistant_generalized/build_datasets.py \
  --window-hours 3 --model-types pressure \
  --hourly-csv backend/model_assistant_generalized/data/hourly.csv \
  --output-dir backend/model_assistant_generalized/datasets_789

# 2. 按事件组切分(6.5/2/1.5,固定种子)
python backend/model_assistant_generalized/split_datasets.py \
  --datasets-dir backend/model_assistant_generalized/datasets_789 \
  --model-types pressure --split-ratios 6.5 2 1.5 --seed 20260921

# 3. 训练
python backend/model_assistant_generalized/train_model.py pressure \
  --datasets-dir backend/model_assistant_generalized/datasets_789 \
  --models-dir backend/model_assistant_generalized/models_789 \
  --all-normal --rounds 800 --early-stopping-rounds 50

# 4. 封存测试
python backend/model_assistant_generalized/evaluate_model.py pressure \
  --datasets-dir backend/model_assistant_generalized/datasets_789 \
  --models-dir backend/model_assistant_generalized/models_789 \
  --output-dir cache/pks_scanner/model_assistant_generalized_789

# 5. 规则联合辅助输出
python backend/model_assistant_generalized/infer_and_combine.py pressure \
  --datasets-dir backend/model_assistant_generalized/datasets_789 \
  --models-dir backend/model_assistant_generalized/models_789 \
  --output-dir cache/pks_scanner/model_assistant_generalized_789

振动复现

振动与压力流程相同,把 --model-types pressure 换成 vibration,目录换成 datasets_vibration_789 / models_vibration_789,输出目录换成 cache/pks_scanner/model_assistant_generalized_vibration_789。切分时振动建议加 --positive-basis groups(每个异常事件等权,避免个别长事件整组落入同一划分)。

6 小时窗口对照

把上面的 datasets_*、models_* 换成 _6h 版本,并在 build_datasets.py 传 --window-hours 6 即可。

压力结果摘要(3h)

测试 2,253 窗口:异常查准率 95.12%、召回率 98.11%、F1 96.59%、PR-AUC 99.61%;正常类 F1 99.74%;事件召回 10/10。分机组正常误报率:7 号机 0.32%、8 号机 1.13%、9 号机 0.00%。

振动结果摘要(3h)

测试 2,180 窗口:异常查准率 71.43%、召回率 71.43%、F1 71.43%、PR-AUC 82.70%;正常类 F1 99.72%;事件召回 4/4。分机组正常误报率:7 号机 0.00%、8 号机 0.71%、9 号机 0.13%。