กำไร:
- ความสามารถในการสร้างขั้นตอนการวิเคราะห์ที่ทำซ้ำได้ซึ่งจะโหลดและล้างข้อมูลการวัดและส่งข้อมูลทางไกล การทดสอบ และการผลิตด้วยแพนด้า
- ความสามารถในการทำความเข้าใจและตรวจสอบเอาต์พุตทีละบรรทัดในขณะที่รับโค้ด คุณลักษณะ และความช่วยเหลือด้านการแสดงภาพจากปัญญาประดิษฐ์
- ความสามารถในการตรวจสอบผลการวิเคราะห์ความสอดคล้องของหน่วย การรั่วไหลของข้อมูล และความสามารถในการทำซ้ำ
ในหน่วยก่อนหน้านี้ เราใช้ปัญญาประดิษฐ์เหมือน "ที่ปรึกษา" ในหน่วยนี้ เราจะก้าวไปอีกขั้นและสร้างขั้นตอนการทำงานที่วิเคราะห์ข้อมูลยานยนต์ด้วยมือของเราเองโดยใช้ Python เป้าหมายไม่ใช่เพื่อให้คุณเป็นนักพัฒนาซอฟต์แวร์ มันคือการสร้างวิศวกรที่สามารถเข้าใจและตรวจสอบรหัสนั้นทีละบรรทัดในขณะที่รับความช่วยเหลือด้านโค้ดจาก AI เนื่องจากโค้ดที่สร้างโดย AI อาจผิดพลาดได้ เช่นเดียวกับข้อความที่สร้างโดย AI อาจทำให้ปริมาตรสับสน ข้อมูลรั่ว จัดกึ่งกลางคอลัมน์ผิด การเรียกใช้โค้ดโดยไม่เข้าใจก็เหมือนกับการเผยแพร่รายงานที่ไม่ได้ลงนาม
หลาม ทำไม? เนื่องจากเป็นมาตรฐานในการวิเคราะห์ข้อมูลโดยพฤตินัย คุณสามารถประมวลผลข้อมูลการวัดและส่งข้อมูลทางไกล การทดสอบ และข้อมูลการผลิตด้วย pandas (ข้อมูลแบบตาราง), numpy (การประมวลผลเชิงตัวเลข), matplotlib (plot) และไลบรารี scikit-learn (การเรียนรู้ของเครื่อง)
หกขั้นตอนในการวิเคราะห์ที่สามารถทำซ้ำได้
การวิเคราะห์ที่ชัดเจนจะเป็นไปตามกรอบการทำงานเดียวกันเสมอ:
- โหลด: อ่านข้อมูลจากไฟล์
- ตรวจสอบ: มิติ คอลัมน์ ประเภทข้อมูล ค่าที่ขาดหายไป
- สะอาด: หายไป/ผิดปกติ หน่วย การแก้ไขการประทับเวลา
- คุณสมบัติการแยก: รับตัวแปรที่มีความหมาย
- การวิเคราะห์/แบบจำลอง: สถิติ การแสดงภาพ หรือแบบจำลอง
- ตรวจสอบและรายงาน: การจัดหาผลลัพธ์ การตรวจสอบปริมาตร/การรั่วไหล การบันทึก
เคล็ดลับ: เมื่อขอโค้ดจาก AI ให้พูดว่า “แสดงความคิดเห็นว่าคุณกำลังทำอะไรในแต่ละขั้นตอนและเขียนสมมติฐานของคุณ” ดังนั้นคุณสามารถตรวจสอบรหัสในขณะที่คุณอ่านได้
ตัวอย่างทีละขั้นตอน: การวิเคราะห์การวัดและส่งข้อมูลทางไกล
รหัสต่อไปนี้โหลดบันทึก CAN/มาตรและทำการตรวจสอบขั้นพื้นฐาน (หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณเข้าใจโค้ดก่อนใช้งาน ชื่อคอลัมน์จะแตกต่างกันไปขึ้นอยู่กับข้อมูลของคุณ)
นำเข้าแพนด้าเป็น pd# 1) โหลด: CSV แบบกึ่งจุด, คอลัมน์แรก timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # จำนวนแถว, จำนวนคอลัมน์ print(df.dtypes) # ประเภทของแต่ละคอลัมน์ (ตัวเลขหรือข้อความ)print(df.isna().sum()) # จำนวนค่าที่หายไป ต่อ columnprint(df.describe()) # สถิติสรุป: ต่ำสุด, สูงสุด, เฉลี่ย
เอาต์พุต คำอธิบาย() เป็นโอกาสแรกของคุณในการตรวจสอบ: หากค่าความเร็วสูงสุดของเครื่องยนต์คือ 45,000 รอบต่อนาที (เครื่องยนต์โดยสารทั่วไป ~ 7,000 รอบต่อนาที) มีความผิดปกติของยูนิตหรือเซ็นเซอร์
คำสั่ง pandas ที่ใช้บ่อยที่สุดในขั้นตอนการตรวจสอบและทำหน้าที่:
คำสั่ง
ทำอะไร
มันยืนยันอะไร?
df.รูปร่าง
จำนวนแถว/คอลัมน์
มันเป็นขนาดที่คาดหวังใช่ไหม?
df.dtypes
ประเภทคอลัมน์
คอลัมน์ตัวเลขกลายเป็นข้อความหรือไม่?
df.isna().sum()
การนับมูลค่าที่ขาดหายไป
มีพื้นที่เท่าไร?
df.อธิบาย()
ต่ำสุด/สูงสุด/เฉลี่ย
มันสมเหตุสมผลทางร่างกายหรือเปล่า?
df.ซ้ำ().ผลรวม()
แถวที่ซ้ำกัน
มีการลงทะเบียนคู่หรือไม่?
# 3) ชัดเจน: ทำเครื่องหมายค่าที่เป็นไปไม่ได้ทางกายภาพ
ข้อควรระวัง: อย่าลบค่าผิดปกติทันที ก่อนอื่นให้เข้าใจว่าทำไมมันถึงผิดปกติ เป็นเหตุการณ์จริง (ความร้อนกะทันหัน) หรือเซ็นเซอร์ทำงานผิดปกติหรือไม่ การลบแบบสุ่มสี่สุ่มห้าอาจซ่อนความผิดที่แท้จริงได้
# 4) คุณสมบัติการแยก: อัตราการเพิ่มขึ้นของอุณหภูมิ (อนุพันธ์) df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) การแสดงภาพอย่างง่ายนำเข้า matplotlib.pyplot เป็น pltplt.plot(df["เวลา"], df["motor_sic"])plt.xlabel("เวลา"); plt.ylabel("อุณหภูมิเครื่องยนต์ (C)")plt.title("หลักสูตรอุณหภูมิเครื่องยนต์")plt.show()
ป้องกันข้อมูลรั่วไหลใน Python
ข้อผิดพลาดที่อันตรายที่สุดในการสร้างแบบจำลองการทำนายคือข้อมูลรั่วไหล (หน่วยที่ 5): เมื่อแบบจำลองเห็นข้อมูลที่ไม่สามารถทราบได้ในขณะที่คาดการณ์ กฎทองเพื่อหลีกเลี่ยงสิ่งนี้ในอนุกรมเวลา: ฝึกฝนกับอดีต ทดสอบกับอนาคต — ไม่มีการสับเปลี่ยนแบบสุ่ม
จาก sklearn.model_selection นำเข้า train_test_split# FALSE: การแยกอนุกรมเวลาแบบสุ่มจะรั่วไหลในอนาคต# df[df["time"] > เกณฑ์] # อนาคต 20% สุดท้าย
ข้อควรระวัง: train_test_split สับเปลี่ยนข้อมูลตามค่าเริ่มต้น (shuffle=True) ในอนุกรมเวลา สิ่งนี้สร้างความสับสนให้กับอนาคตด้วยการศึกษา และทำให้เกิดคะแนนสูงผิดๆ หาก AI ได้ทำสิ่งนี้ในโค้ดที่สร้างขึ้น อย่าลืมแก้ไขด้วย
ความสม่ำเสมอของหน่วย: นักฆ่าเงียบ
ข้อผิดพลาดที่ร้ายกาจที่สุดในยานยนต์คือข้อผิดพลาดของหน่วย: km/h ถึง m/s, Nm ถึง lb-ft, bar เป็น kPa, °C ถึง K การเก็บพจนานุกรมว่าหน่วยของแต่ละคอลัมน์อยู่ในการวิเคราะห์และจดบันทึกการแปลงไว้อย่างชัดเจนสามารถช่วยชีวิตผู้คนได้
# บันทึกหน่วยอย่างชัดเจน = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# การแปลงอย่างชัดเจนหากจำเป็น (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6
กรณีศึกษาขนาดเล็ก
กรณีที่ 1 - ตรวจพบข้อผิดพลาดด้วย description() นักวิเคราะห์รันโค้ดจาก AI และทำการประมาณช่วง ผลลัพธ์ที่ได้ก็สูงอย่างไร้เหตุผล เมื่อเราดูที่เอาท์พุต คำอธิบาย() เราจะเห็นว่าความจุของแบตเตอรี่ถูกป้อนเป็น Wh ในบางบรรทัด และป้อนเป็น kWh ในบางบรรทัด (ต่างกัน 1,000 เท่า) เมื่อนำยูนิตไปเป็นแบบยูนิฟอร์ม ผลลัพธ์ก็จะดีขึ้น สรุป: สถิติสรุปง่ายๆ ป้องกันการคาดการณ์ที่ไม่ถูกต้อง
กรณีที่ 2 - กับดักความสับสน แบบจำลองการสึกหรอของเบรกของผู้ฝึกงานมีความแม่นยำ 98% ในชุดทดสอบ เมื่อตรวจสอบโค้ดแล้ว จะเห็นได้ว่า train_test_split(shuffle=True) และอนุกรมเวลาผสมกัน ซึ่งหมายความว่าคะแนนในอนาคตจะรั่วไหลเข้าสู่การฝึก เมื่อหารด้วยเวลาความแม่นยำจะลดลงเหลือ 80% แต่ตอนนี้มันสมจริงแล้ว สรุป: เพียงเพราะโค้ด AI ทำงานมันไม่ถูกต้อง มนุษย์จับรอยรั่วได้
กรณีที่ 3 - ทำความเข้าใจกับค่าผิดปกติ ในบันทึกความทนทาน รหัส AI จะลบค่าความเครียดที่ผิดปกติโดยอัตโนมัติ วิศวกรตรวจสอบจุดที่ถูกลบ นี่เป็นช่วงเวลาของการเริ่มต้นแคร็กที่การทดสอบสนใจ การลบจะถูกลบออก และการละเมิดจะถูกพิจารณาแยกกัน ผลลัพธ์: ภายใต้ "การทำความสะอาด" สามารถลบสัญญาณจริงได้ ตั้งคำถามทุกขั้นตอน
เทมเพลตพร้อมท์
เทมเพลต 1 - รหัสคำขอ (พร้อมคำอธิบาย):
บทบาท: คุณเป็นที่ปรึกษานักวิเคราะห์ข้อมูล Python งาน: เขียนโค้ดที่โหลดและตรวจสอบ CSV การวัดและส่งข้อมูลทางไกล บริบท: คอลัมน์: เวลา, ความเร็ว (กม./ชม.), engine_sic (C), การปฏิวัติ (rpm) ข้อจำกัด: แสดงความคิดเห็นในแต่ละแถว อธิบายว่าเช็คใดที่ถูกสร้างขึ้นและเพราะเหตุใด เพิ่มการตรวจสอบมูลค่าที่เป็นไปไม่ได้ทางกายภาพ ไม่ได้ลบสิ่งใดเลยอย่างเงียบๆ เอาต์พุต: รหัสความคิดเห็น + เอาต์พุตใดที่ฉันควรดูและเพราะเหตุใด
เทมเพลต 2 - การตรวจสอบรอยรั่ว:
บทบาท: คุณเป็นผู้ตรวจสอบโค้ดการเรียนรู้ของเครื่อง งาน: ตรวจสอบโค้ดแยกการฝึกอบรม/การทดสอบต่อไปนี้เพื่อดูข้อมูลรั่วไหล บริบท: นี่คืออนุกรมเวลา (การตรวจวัดระยะไกลของยานพาหนะ) ข้อจำกัด: เตือนหากมีการสับแบบสุ่ม แนะนำและปรับการแบ่งตามเวลา ผลลัพธ์: ผลการวิจัย + รหัสที่แก้ไข + คำอธิบาย
เทมเพลต 3 - การตรวจสอบหน่วย:
บทบาท: คุณเป็นผู้ตรวจสอบคุณภาพข้อมูล งาน: แนะนำการตรวจสอบที่มองหาความไม่สอดคล้องกันของหน่วยใน DataFrame บริบท: ความจุอาจเป็น kWh ในบางแถวและ Wh ในบางแถว เอาต์พุต: ตรวจสอบโค้ด + วิธีค้นหารูปแบบที่น่าสงสัย
เทมเพลต 4 - การแสดงภาพ + ความคิดเห็น:
บทบาท: คุณเป็นผู้เชี่ยวชาญด้านการแสดงภาพข้อมูล ภารกิจ: เขียนโค้ดที่วางแผนอุณหภูมิเครื่องยนต์และอัตราการเพิ่ม ข้อจำกัด: ติดป้ายกำกับแกนด้วยยูนิต มองเห็นความผิดปกติ; อย่าเรียกร้องความผิดขั้นสุดท้ายเมื่อตีความกราฟ ผลลัพธ์: รหัส + สิ่งที่ต้องค้นหาในกราฟ
พรอมต์อ่อน / พรอมต์แข็งแกร่ง
พรอมต์ที่อ่อนแอ:
สร้างแบบจำลองด้วยข้อมูลนี้
ยังไม่ชัดเจนว่าเป้าหมายไหน ช่องไหน ตรวจสอบอะไร AI สามารถส่งออกโค้ดที่มีสัญญาณรบกวน รั่ว และมองไม่เห็นได้
พรอมต์อันทรงพลัง:
บทบาท: คุณเป็นที่ปรึกษา Python ML งาน: เขียนขั้นตอนการทำงานเบื้องต้นเพื่อคาดการณ์การสึกหรอของผ้าเบรกและสาธิตข้อผิดพลาดในการตรวจสอบ บริบท: การวัดและส่งข้อมูลทางไกลอนุกรมเวลา เป้าหมาย: ความหนาของแผ่นที่เหลืออยู่ ข้อจำกัด: แบ่งอนุกรมเวลาตามเวลา (ไม่มีการสับ); คุณลักษณะแฟล็กที่มีความเสี่ยงต่อการรั่วไหลของข้อมูล หน่วยเอกสาร ตีความแต่ละขั้นตอน จดบันทึกสิ่งที่จำเป็นต้องมีการตรวจสอบก่อนที่ผลลัพธ์จะออกสู่สนาม ผลลัพธ์: รหัสความคิดเห็น + รายการตรวจสอบการยืนยัน
ข้อผิดพลาดทั่วไป
- รันโค้ดโดยไม่เข้าใจ รหัส AI อาจมีข้อผิดพลาดเช่นกัน อ่านทีละบรรทัด
- อนุกรมเวลาการผสม shuffle=True รั่วไหลไปสู่อนาคตและสร้างคะแนนปลอม
- ลบค่าผิดปกติออกไปโดยสุ่มสี่สุ่มห้า สามารถล้างสัญญาณจริง (การโจมตีผิดพลาด) ได้
- ไม่จัดทำเอกสารหน่วย ข้อผิดพลาดเช่น km/h กับ m/s, Wh กับ kWh เติบโตอย่างเงียบๆ
- ข้ามขั้นตอนการอธิบาย()/ตรวจสอบ ข้อผิดพลาดส่วนใหญ่ปรากฏในสถิติสรุปแรก
โดยสรุป
- Python (pandas, numpy, matplotlib, scikit-learn) เป็นมาตรฐานในการวิเคราะห์ข้อมูลยานยนต์โดยพฤตินัย
- การวิเคราะห์ซ้ำได้: โหลด ตรวจสอบ ทำความสะอาด นำเสนอ วิเคราะห์ ตรวจสอบ และรายงาน
- จำเป็นต้องเข้าใจและตรวจสอบรหัสที่ AI สร้างทีละบรรทัด เพียงเพราะมันใช้ได้ผลไม่ได้หมายความว่ามันถูกต้อง
- รักษาความแตกต่างในอดีต/อนาคตในอนุกรมเวลา การสับแบบสุ่มทำให้เกิดการรั่วไหลของข้อมูล
- ความสอดคล้องของหน่วยและการตีความค่าผิดปกตินั้นเงียบแต่เป็นจุดสำคัญของการตรวจสอบ
งานสมัคร
ใช้ชุดข้อมูลขนาดเล็ก (การวัดและส่งข้อมูลทางไกลจริงหรือสังเคราะห์) (1) ปฏิบัติตามกรอบงานหกขั้นตอน สร้างโค้ดการโหลดและควบคุมด้วยเทมเพลต 1 และยืนยันว่าคุณเข้าใจแต่ละบรรทัด (2) ค้นหาค่าที่น่าสงสัยอย่างน้อยหนึ่งค่าในเอาต์พุต description() และตรวจสอบสาเหตุ (3) ในงานทำนาย ให้กำหนดเวลาการแบ่งการฝึกอบรม/การทดสอบ และตรวจสอบความเสี่ยงของการรั่วไหลด้วยเทมเพลต 2 (4) บันทึกหน่วยของแต่ละคอลัมน์ที่คุณใช้ในพจนานุกรม
รายการตรวจสอบ
- [ ] ฉันตั้งค่าการวิเคราะห์ด้วยกรอบงานหกขั้นตอน
- [ ] ฉันอ่านและเข้าใจโค้ดที่สร้างโดย AI ทีละบรรทัด
- [ ] ฉันค้นหาค่าที่น่าสงสัยด้วย description()/audit
- [ ] ฉันแบ่งอนุกรมเวลาตามเวลา (ไม่มีการสับเปลี่ยน)
- [ ] ฉันทำเครื่องหมายคุณลักษณะที่มีความเสี่ยงต่อการรั่วไหลของข้อมูล
- [ ] ฉันบันทึกหน่วยของแต่ละคอลัมน์และเขียนการแปลงอย่างชัดเจน