|
@@ -0,0 +1,43 @@
|
|
|
|
|
+"""查找不良关键因子。"""
|
|
|
|
|
+
|
|
|
|
|
+import argparse
|
|
|
|
|
+
|
|
|
|
|
+import pandas as pd
|
|
|
|
|
+
|
|
|
|
|
+from defect_analysis.ml.key_factors import find_key_factors
|
|
|
|
|
+from defect_analysis.schemas import normalize_defect_schema
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def analyze_csv_key_factors(csv_path, *, target_defect_type=None, target_severity=None, top_n=20):
|
|
|
|
|
+ df = pd.read_csv(csv_path, parse_dates=["timestamp"], encoding="utf-8-sig")
|
|
|
|
|
+ df = normalize_defect_schema(df)
|
|
|
|
|
+ return find_key_factors(
|
|
|
|
|
+ df,
|
|
|
|
|
+ target_defect_type=target_defect_type,
|
|
|
|
|
+ target_severity=target_severity,
|
|
|
|
|
+ top_n=top_n,
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def main():
|
|
|
|
|
+ parser = argparse.ArgumentParser(description="查找不良关键因子")
|
|
|
|
|
+ parser.add_argument("--csv", default="defect_data.csv", help="缺陷 CSV 文件路径")
|
|
|
|
|
+ parser.add_argument("--target-defect-type", help="目标缺陷类型,例如 气泡/划痕/漏光")
|
|
|
|
|
+ parser.add_argument("--target-severity", help="目标严重等级,例如 严重")
|
|
|
|
|
+ parser.add_argument("--top-n", type=int, default=20)
|
|
|
|
|
+ args = parser.parse_args()
|
|
|
|
|
+
|
|
|
|
|
+ result = analyze_csv_key_factors(
|
|
|
|
|
+ args.csv,
|
|
|
|
|
+ target_defect_type=args.target_defect_type,
|
|
|
|
|
+ target_severity=args.target_severity,
|
|
|
|
|
+ top_n=args.top_n,
|
|
|
|
|
+ )
|
|
|
|
|
+ if result.empty:
|
|
|
|
|
+ print("未找到显著关键因子,请检查目标条件或增加样本量。")
|
|
|
|
|
+ else:
|
|
|
|
|
+ print(result.to_string(index=False))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
|
+ main()
|