analyze_key_factors.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """查找不良关键因子。"""
  2. import argparse
  3. import pandas as pd
  4. from defect_analysis.ml.key_factors import find_key_factors
  5. from defect_analysis.schemas import normalize_defect_schema
  6. def analyze_csv_key_factors(csv_path, *, target_defect_type=None, target_severity=None, top_n=20):
  7. df = pd.read_csv(csv_path, parse_dates=["timestamp"], encoding="utf-8-sig")
  8. df = normalize_defect_schema(df)
  9. return find_key_factors(
  10. df,
  11. target_defect_type=target_defect_type,
  12. target_severity=target_severity,
  13. top_n=top_n,
  14. )
  15. def main():
  16. parser = argparse.ArgumentParser(description="查找不良关键因子")
  17. parser.add_argument("--csv", default="defect_data.csv", help="缺陷 CSV 文件路径")
  18. parser.add_argument("--target-defect-type", help="目标缺陷类型,例如 气泡/划痕/漏光")
  19. parser.add_argument("--target-severity", help="目标严重等级,例如 严重")
  20. parser.add_argument("--top-n", type=int, default=20)
  21. args = parser.parse_args()
  22. result = analyze_csv_key_factors(
  23. args.csv,
  24. target_defect_type=args.target_defect_type,
  25. target_severity=args.target_severity,
  26. top_n=args.top_n,
  27. )
  28. if result.empty:
  29. print("未找到显著关键因子,请检查目标条件或增加样本量。")
  30. else:
  31. print(result.to_string(index=False))
  32. if __name__ == "__main__":
  33. main()