run_pipeline.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env python3
  2. """Run the whole vibration pipeline: build -> split -> train -> evaluate -> infer.
  3. Default reproduces the documented 3h vibration model. Pass ``--window-hours 6``
  4. to keep the 6h capability (not regenerated by default).
  5. """
  6. from __future__ import annotations
  7. import argparse
  8. import subprocess
  9. import sys
  10. from pathlib import Path
  11. HERE = Path(__file__).resolve().parent
  12. def run(script: str, *args: str) -> None:
  13. command = [sys.executable, str(HERE / script), *args]
  14. print("\n$ " + " ".join(command), flush=True)
  15. subprocess.run(command, check=True)
  16. def main() -> None:
  17. parser = argparse.ArgumentParser(description="振动模型完整流水线")
  18. parser.add_argument("--window-hours", type=int, default=3)
  19. parser.add_argument("--skip-build", action="store_true")
  20. parser.add_argument("--skip-split", action="store_true")
  21. parser.add_argument("--skip-train", action="store_true")
  22. args = parser.parse_args()
  23. window = str(args.window_hours)
  24. if not args.skip_build:
  25. run("build_datasets.py", "--window-hours", window)
  26. if not args.skip_split:
  27. run("split_datasets.py", "--split-ratios", "6.5", "2", "1.5", "--seed", "20260921", "--positive-basis", "groups")
  28. if not args.skip_train:
  29. run("train_model.py", "--all-normal", "--rounds", "800", "--early-stopping-rounds", "50")
  30. run("evaluate_model.py")
  31. run("infer_and_combine.py")
  32. if __name__ == "__main__":
  33. main()