This commit is contained in:
MZ YANG
2026-02-12 01:46:47 +08:00
parent 26b9b8a447
commit f1afd4bf38
11 changed files with 77395 additions and 13341 deletions

121
figures/README.md Normal file
View File

@@ -0,0 +1,121 @@
# Figures 说明
本目录里的图片主要由 [plot_benchmark.py](file:///f:/Development/modbus_diffusion/mask-ddpm/mask-ddpm/example/plot_benchmark.py) 生成,用来对比:
- generated完整管线采样导出的 `example/results/generated.csv`(或 post 后的 `generated_post.csv`
- temporal_only只使用 `temporal.pt`temporal stage1的输出
- real`--reference` 指定的真实训练数据(通常是 `example/config.json` 里的 `data_glob` / `data_path` 指向的 `train*.csv.gz`
## 通用图例
- 蓝色模型输出generated 或 temporal_only具体看文件名
- 红色真实数据real
- 文件名包含 `with_real`:一定画了红色 real
- 文件名包含 `generated_only`:只画模型输出(没有 real
- 文件名包含 `temporal`:使用 `temporal.pt`(只时序 stage1
- 文件名包含 `ref384`:真实数据读取行数被限制到 384通常用于和 generated 行数对齐)
## 每张图是干嘛的
### 总览与指标
- [benchmark_panel.svg](./benchmark_panel.svg)
- 作用:一张图看完整评估概况(四个 panel
- A连续特征均值的“generated vs real”一致性轮廓按 real min/max 做范围归一化)
- B每个特征的 KS 分布差异(越小越好)
- C不同训练文件之间的均值漂移数据集 shift
- D多随机种子鲁棒性 + 指标历史曲线
- 生成:`python example/plot_benchmark.py --figure panel`
- [benchmark_metrics.svg](./benchmark_metrics.svg)
- 作用:只看 3 个核心指标在不同 seed 下的均值/方差(越小越好)
- 指标avg_ks连续、avg_jsd离散、avg_lag1_diff滞后 1 自相关差异)
- 生成:`python example/plot_benchmark.py --figure summary`
- [ranked_ks.svg](./ranked_ks.svg)
- 作用:定位“哪些特征拖累了平均 KS”
- 左侧top-K KS 最大的特征
- 右侧:移除最差特征后,平均 KS 会下降多少
- 生成:`python example/plot_benchmark.py --figure ranked_ks`
### 线图(时间序列形状)
- [lines.svg](./lines.svg)
- 作用:对比 generated vs real 的时间序列曲线(选定若干特征)
- 输入:`example/results/generated.csv` + `--reference` 指向的 real
- 生成:`python example/plot_benchmark.py --figure lines --reference example/config.json`
- [lines_generated_type4.svg](./lines_generated_type4.svg)
- 作用Type4`P1_PIT02,P2_SIT02,P1_FT03`)的 generated 时间序列(可能不含 real取决于生成时的参数
- 生成:通常来自 `--figure lines --lines-features ... --out ...`
- [lines_generated_type4_with_real.svg](./lines_generated_type4_with_real.svg)
- 作用Type4 的 generated vs real 时间序列对比
- 生成(示例):
- `python example/plot_benchmark.py --figure lines --generated example/results/generated.csv --reference example/config.json --cont-stats example/results/cont_stats.json --lines-features P1_PIT02,P2_SIT02,P1_FT03 --lines-max-rows 2048 --out figures/lines_generated_type4_with_real.svg`
- [lines_temporal.svg](./lines_temporal.svg)
- 作用temporal_only vs real 的时间序列曲线(只时序 stage1
- 输入:`temporal.pt` + `--reference` 指向的 real
- 生成:`python example/plot_benchmark.py --figure lines_temporal --reference example/config.json --temporal-pt <path/to/temporal.pt>`
- [lines_temporal_type4.svg](./lines_temporal_type4.svg)
- 作用Type4 的 temporal_only 时间序列(可能不含 real取决于生成时的参数
- [lines_temporal_type4_with_real.svg](./lines_temporal_type4_with_real.svg)
- 作用Type4 的 temporal_only vs real 时间序列对比
### 分布图CDF对齐边缘/中位数/尾部)
- [cdf_grid.svg](./cdf_grid.svg)
- 作用:连续特征的 CDF 网格generated vs real
- 生成:`python example/plot_benchmark.py --figure cdf_grid --reference example/config.json`
- [cdf_grid_all.svg](./cdf_grid_all.svg)
- 作用:`cdf_grid.svg` 的“更多特征/全量特征”版本(通常是 `--cdf-max-features 0` 或更大的上限)
- [cdf_grid_types.svg](./cdf_grid_types.svg)
- 作用:按 Type1~Type6 分组的连续特征 CDFgenerated vs real
- 生成:`python example/plot_benchmark.py --figure cdf_grid_types --reference example/config.json --type-config example/config.json`
- [cdf_grid_types_generated_only.svg](./cdf_grid_types_generated_only.svg)
- 作用:按类型分组的连续特征 CDF只画 generated没有 real
- [cdf_grid_types_generated_with_real.svg](./cdf_grid_types_generated_with_real.svg)
- 作用:按类型分组的连续特征 CDFgenerated vs real
- [cdf_grid_types_ref384.svg](./cdf_grid_types_ref384.svg)
- 作用:按类型分组的连续特征 CDF但 real 侧只读取 384 行(方便与 generated 行数对齐做“同样本量”对比)
- [cdf_grid_types_temporal.svg](./cdf_grid_types_temporal.svg)
- 作用:按类型分组的连续特征 CDFtemporal_only vs real
- [cdf_grid_types_temporal_fast.svg](./cdf_grid_types_temporal_fast.svg)
- 作用:`cdf_grid_types_temporal` 的快速版本(通常 seq_len/bins 更小)
- [cdf_grid_types_temporal_ref384.svg](./cdf_grid_types_temporal_ref384.svg)
- 作用:按类型分组的 temporal_only CDF但 real 侧只读取 384 行
- [cdf_grid_types_temporal_with_real.svg](./cdf_grid_types_temporal_with_real.svg)
- 作用:按类型分组的 temporal_only vs real CDF
### 离散特征分布
- [disc_grid.svg](./disc_grid.svg)
- 作用离散特征的分布网格generated vs real
- 生成:`python example/plot_benchmark.py --figure disc_grid --reference example/config.json`
- [disc_points.svg](./disc_points.svg)
- 作用离散特征的“类别占比对比点图”每个类别两点generated 与 real
- 生成:`python example/plot_benchmark.py --figure disc_points --reference example/config.json`
### Smoke / 临时检查图
以下 `*_smoke_*.svg` 多数是临时/快速检查用输出(用于验证脚本跑通、参数组合是否正常),不一定是最终报告图:
- [_smoke_cdf_all.svg](./_smoke_cdf_all.svg)
- [_smoke_cdf_types_temporal_exclude.svg](./_smoke_cdf_types_temporal_exclude.svg)
- [_smoke_disc_all.svg](./_smoke_disc_all.svg)
- [_smoke_lines_temporal_cond.svg](./_smoke_lines_temporal_cond.svg)
- [_smoke_lines_temporal_seeded.svg](./_smoke_lines_temporal_seeded.svg)