|
|
3 недель назад | |
|---|---|---|
| .. | ||
| data | 3 недель назад | |
| datasets_789 | 3 недель назад | |
| datasets_789_6h | 3 недель назад | |
| datasets_vibration_789 | 3 недель назад | |
| datasets_vibration_789_6h | 3 недель назад | |
| models_789 | 3 недель назад | |
| models_789_6h | 3 недель назад | |
| models_vibration_789 | 3 недель назад | |
| models_vibration_789_6h | 3 недель назад | |
| README.md | 3 недель назад | |
| RESULTS_789_GENERALIZED.md | 3 недель назад | |
| RESULTS_789_VIBRATION.md | 3 недель назад | |
| __init__.py | 3 недель назад | |
| build_datasets.py | 3 недель назад | |
| evaluate_model.py | 3 недель назад | |
| generalized_features.py | 3 недель назад | |
| generalized_features_vibration.py | 3 недель назад | |
| infer_and_combine.py | 3 недель назад | |
| split_datasets.py | 3 недель назад | |
| train_model.py | 3 недель назад | |
| 实时联合诊断方案.md | 3 недель назад | |
| 跨机组泛化与样本扩充方案.md | 3 недель назад | |
本目录是 7/8/9 号机压力与振动的泛化模型,两者互相独立:分别建特征、分别训练、分别评估,互不影响。
核心思路:绝对油压/振动值各机组不同,直接混合训练会把一台机组的正常水平当成另一台机组的异常。因此去掉绝对特征,改用机组相对(泛化)特征:
*_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(每个异常事件等权,避免个别长事件整组落入同一划分)。
把上面的 datasets_*、models_* 换成 _6h 版本,并在 build_datasets.py 传 --window-hours 6 即可。
测试 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%。
测试 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%。