وحدة 9 / 11

تحليل بيانات السيارات باستخدام بايثون: من البداية إلى النهاية

المكاسب:

  • القدرة على إنشاء سير عمل تحليلي قابل للتكرار يقوم بتحميل وتنظيف بيانات القياس عن بعد والاختبار والإنتاج باستخدام الباندا
  • القدرة على فهم المخرجات والتحقق منها سطرًا تلو الآخر أثناء تلقي التعليمات البرمجية والسمات والمساعدة في التصور من الذكاء الاصطناعي
  • القدرة على تدقيق نتائج التحليل من أجل اتساق الوحدة وتسرب البيانات وإمكانية التكرار

في الوحدات السابقة استخدمنا الذكاء الاصطناعي مثل "المستشار". في هذه الوحدة، نخطو خطوة أخرى إلى الأمام وننشئ سير عمل يحلل بيانات السيارات بأيدينا باستخدام لغة Python. الهدف ليس أن تجعلك مطور برامج؛ الهدف هو إنشاء مهندس يمكنه فهم هذا الرمز والتحقق منه سطرًا تلو الآخر أثناء الحصول على مساعدة التعليمات البرمجية من الذكاء الاصطناعي. لأن الكود الذي ينتجه الذكاء الاصطناعي يمكن أن يكون معيبًا، تمامًا مثل النص الذي ينتجه الذكاء الاصطناعي؛ قد يخلط بين الحجم وتسرب البيانات ومركز العمود الخاطئ. إن تشغيل التعليمات البرمجية دون فهمها يشبه نشر تقرير غير موقع.

بايثون لماذا؟ لأنه المعيار الفعلي في تحليل البيانات: يمكنك بسهولة معالجة بيانات القياس عن بعد والاختبار والإنتاج باستخدام مكتبات pandas (البيانات الجدولية)، وnumpy (المعالجة العددية)، وmatplotlib (plot)، ومكتبات scikit-learn (التعلم الآلي).

ست خطوات للتحليل استنساخه

يتبع التحليل القوي دائمًا نفس الإطار:

  1. تحميل: قراءة البيانات من الملف.
  2. فحص: البعد والأعمدة وأنواع البيانات والقيم المفقودة.
  3. تنظيف: مفقود/القيمة المتطرفة، الوحدة، تصحيح الطابع الزمني.
  4. ميزة الاستخراج: اشتقاق متغيرات ذات معنى.
  5. التحليل/النموذج: الإحصائيات أو التصور أو النموذج.
  6. التحقق والإبلاغ: توفير النتائج، وفحص الحجم/التسرب، والتسجيل.
نصيحة: عندما تطلب من الذكاء الاصطناعي التعليمات البرمجية، قل "علق على ما تفعله في كل خطوة واكتب افتراضاتك". حتى تتمكن من التحقق من الرمز أثناء قراءته.

مثال خطوة بخطوة: تحليل القياس عن بعد

يقوم التعليمة البرمجية التالية بتحميل سجل CAN/القياس عن بعد وإجراء فحص أساسي. (ملاحظة: تأكد من فهمك للرموز قبل تشغيلها؛ تختلف أسماء الأعمدة وفقًا لبياناتك.)

استيراد الباندا كـ pd# 1) التحميل: ملف CSV شبه منقط، العمود الأول timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # كم عدد الصفوف، كم عدد الأعمدةprint(df.dtypes) # نوع كل عمود (رقم أو نص)print(df.isna().sum()) # عدد القيم المفقودة لكل عمود print(df.describe()) # إحصائيات الملخص: الحد الأدنى، الحد الأقصى، المتوسط

يعد إخراج الوصف () هو فرصتك الأولى للتحقق: إذا كانت القيمة القصوى لسرعة المحرك هي 45000 دورة في الدقيقة (محرك الركاب النموذجي ~ 7000 دورة في الدقيقة)، فهناك خطأ في الوحدة أو المستشعر.

أوامر الباندا الأكثر استخداما في خطوة التدقيق وماذا تفعل:

الأمر

ماذا يفعل

ماذا يؤكد؟

df.shape

عدد الصفوف/الأعمدة

هل هو الحجم المتوقع؟

df.dtypes

أنواع الأعمدة

هل أصبح عمود الرقم نصًا؟

df.isna().sum()

عدد القيمة مفقود

كم المساحة هناك؟

وصف df ()

الحد الأدنى/الحد الأقصى/المتوسط

هل هو معقول جسديا؟

df.duplicated().sum()

صف مكرر

هل هناك تسجيل مزدوج؟

# 3) واضح: حدد القيم المستحيلة فعليًا

تحذير: لا تقم بحذف القيمة المتطرفة على الفور؛ افهم أولاً سبب كونها حالة متطرفة. هل هو حدث حقيقي (تسخين مفاجئ) أم فشل في المستشعر؟ قد يؤدي الحذف الأعمى إلى إخفاء الخطأ الحقيقي.

# 4) ميزة الاستخراج: معدل ارتفاع درجة الحرارة (مشتق)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_thans()# 5) استيراد تصور بسيط matplotlib.pyplot as pltplt.plot(df["time"], df["motor_sic"])plt.xlabel("Time"); plt.ylabel("درجة حرارة المحرك (C)")plt.title("دورة درجة حرارة المحرك")plt.show()

منع تسرب البيانات في بايثون

أخطر خطأ عند بناء نموذج التنبؤ هو تسرب البيانات (الوحدة الخامسة): عندما يرى النموذج معلومات لا يمكن معرفتها وقت التنبؤ. القاعدة الذهبية لتجنب ذلك في السلاسل الزمنية: تدرب مع الماضي، واختبر مع المستقبل - لا خلط عشوائي.

من sklearn.model_selection import Train_test_split# خطأ: تقسيم السلاسل الزمنية بشكل عشوائي يؤدي إلى تسريب المستقبل# df[df["time"] > العتبة] # آخر 20% من المستقبل

تنبيه: يقوم Train_test_split بخلط البيانات بشكل افتراضي (خلط عشوائي = صحيح). وفي السلسلة الزمنية، يخلط هذا بين المستقبل والتعليم وينتج درجة عالية كاذبة. إذا كان الذكاء الاصطناعي قد فعل ذلك في التعليمات البرمجية التي ينتجها، فتأكد من إصلاحه.

اتساق الوحدة: القاتل الصامت

الأخطاء الأكثر خطورة في السيارات هي أخطاء الوحدة: 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 - تم اكتشاف خطأ في الوصف (). يقوم المحلل بتشغيل الكود من الذكاء الاصطناعي ويقوم بتقدير النطاق؛ والنتيجة عالية بشكل سخيف. عندما ننظر إلى مخرجات الشرح()، نرى أنه يتم إدخال سعة البطارية بوحدة Wh في بعض الأسطر وبوحدة kWh في خطوط أخرى (بفارق 1000 مرة). عندما يتم إحضار الوحدة إلى نوع موحد، تتحسن النتيجة. الاستنتاج: إحصائية موجزة بسيطة حالت دون التنبؤ السيئ.

الحالة 2 - فخ الارتباك. كان نموذج تآكل الفرامل الخاص بالمتدرب دقيقًا بنسبة 98% في مجموعة الاختبار. عند فحص الكود، يمكن ملاحظة أن Train_test_split(shuffle=True) والسلسلة الزمنية مختلطان، مما يعني أن النقاط المستقبلية تتسرب إلى التدريب. عند قسمتها على الوقت، تنخفض الدقة إلى 80%، لكنها أصبحت الآن واقعية. الخلاصة: لمجرد أن كود الذكاء الاصطناعي يعمل، فهو لم يكن صحيحًا؛ اشتعلت الإنسان تسرب.

الحالة 3 - فهم الخارج. في سجل المتانة، يقوم كود الذكاء الاصطناعي تلقائيًا بحذف قيم الضغط الخارجية. ينظر المهندس إلى النقاط المحذوفة؛ كانت هذه بالضبط لحظات بدء الكراك التي كان الاختبار مهتمًا بها. تتم إزالة الحذف وتؤخذ الانتهاكات في مراجعة منفصلة. النتيجة: ضمن "التنظيف"، يمكن حذف الإشارة الحقيقية؛ السؤال في كل خطوة.

قوالب سريعة

النموذج 1 - رمز الطلب (مع الشرح):

الدور: أنت معلم محلل بيانات بايثون. المهمة: اكتب التعليمات البرمجية التي تقوم بتحميل ملف CSV للقياس عن بعد والتحقق منه. السياق: الأعمدة: الوقت، السرعة (كم/ساعة)، Engine_sic(C)، الثورة (دورة في الدقيقة). القيد: قم بالتعليق على كل صف؛ اشرح ما هو الشيك الذي تم إجراؤه ولماذا؛ إضافة التحقق من القيمة المستحيلة فعليًا؛ حذف أي شيء بصمت. الإخراج: الكود المُعلق + الإخراج الذي يجب أن أنظر إليه ولماذا.

النموذج 2 - فحص التسرب:

الدور: أنت مراجع أكواد التعلم الآلي. المهمة: تحقق من كود تقسيم التدريب/الاختبار التالي بحثًا عن تسرب البيانات. السياق: هذه سلسلة زمنية (قياس السيارة عن بعد). القيد: تحذير إذا كان هناك خلط عشوائي؛ اقتراح وتبرير التقسيم حسب الوقت. المخرجات: النتائج + الكود المصحح + الشرح.

النموذج 3 - التحقق من صحة الوحدة:

الدور: أنت مدقق جودة البيانات. المهمة: اقتراح عمليات فحص تبحث عن عدم تناسق الوحدة في DataFrame. السياق: قد تكون السعة كيلووات ساعة في بعض الصفوف ووات ساعة في صفوف أخرى. الإخراج: تحقق من الكود + كيفية العثور على النمط المشبوه.

النموذج 4 - التصور + التعليق:

الدور: أنت خبير في تصور البيانات. المهمة: كتابة الكود الذي يرسم مسار درجة حرارة المحرك ومعدل الزيادة. القيد: قم بتسمية المحاور بالوحدة؛ علامة بصريا على الشذوذ. لا تدعي وجود خطأ نهائي عند تفسير الرسم البياني. الإخراج: الكود + ما الذي تبحث عنه في الرسم البياني.

موجه ضعيف / موجه قوي

حث ضعيف:

بناء نموذج بهذه البيانات.

ليس من الواضح أي هدف وأي حجرة وأي عملية تحقق؛ يمكن للذكاء الاصطناعي إخراج كود مشوش ومتسرب ومعمى الوحدة.

مطالبة قوية:

الدور: أنت معلم Python ML. المهمة: كتابة سير عمل أولي للتنبؤ بتآكل وسادة الفرامل وإظهار مخاطر التحقق من الصحة. السياق: قياس السلاسل الزمنية عن بعد؛ الهدف: سمك اللوحة المتبقية. القيد: سلسلة زمنية مقسمة حسب الوقت (بدون خلط)؛ سمات الإشارة المعرضة لخطر تسرب البيانات؛ وحدات الوثيقة؛ تفسير كل خطوة؛ قم بتدوين الفحوصات المطلوبة قبل خروج النتيجة إلى الميدان. الإخراج: الكود المُعلق + قائمة التحقق.

الأخطاء الشائعة

  • تشغيل الكود دون فهمه. قد يكون رمز الذكاء الاصطناعي معيبًا أيضًا؛ قراءة سطراً سطراً.
  • خلط السلاسل الزمنية. خلط ورق اللعب=صحيح يسرب المستقبل وينتج نتيجة مزيفة.
  • حذف القيم المتطرفة بشكل أعمى. يمكن مسح الإشارة الفعلية (بداية الخطأ).
  • عدم توثيق الوحدة. أخطاء مثل km/h مقابل m/s، Wh مقابل kWh تنمو بصمت.
  • تخطي خطوة الوصف ()/التحقق. تظهر معظم الأخطاء في إحصائيات الملخص الأول.

باختصار

  • بايثون (pandas، numpy، matplotlib، scikit-learn) هو المعيار الفعلي لتحليل بيانات السيارات.
  • التحليل المتكرر: التحميل والفحص والتنظيف والتمييز والتحليل والتحقق من الصحة والإبلاغ.
  • من الضروري فهم الكود الذي ينتجه الذكاء الاصطناعي سطرًا تلو الآخر والتحقق منه؛ فقط لأنه يعمل لا يعني أنه صحيح.
  • الحفاظ على التمييز بين الماضي والمستقبل في السلاسل الزمنية. يؤدي الخلط العشوائي إلى تسرب البيانات.
  • إن اتساق الوحدة والتفسير الخارجي هما نقاط تحقق صامتة ولكنها حاسمة.

مهمة التطبيق

خذ مجموعة بيانات صغيرة (قياس عن بعد حقيقي أو اصطناعي). (1) باتباع إطار العمل المكون من ست خطوات، قم بإنشاء كود التحميل والتحكم باستخدام النموذج 1 وتأكد من أنك تفهم كل سطر. (2) ابحث عن قيمة مشبوهة واحدة على الأقل في مخرجات الوصف () وابحث عن السبب. (3) في مهمة التنبؤ، حدد وقت تقسيم التدريب/الاختبار وتحقق من خطر التسرب باستخدام النموذج 2. (4) قم بتوثيق وحدة كل عمود تستخدمه في القاموس.

قائمة مرجعية

  • [ ] قمت بإعداد التحليل باستخدام إطار عمل مكون من ست خطوات.
  • [ ] قرأت وفهمت الكود الذي أنتجه الذكاء الاصطناعي سطرًا تلو الآخر.
  • [ ] لقد بحثت عن القيم المشبوهة باستخدام description()/audit.
  • [ ] قمت بتقسيم السلسلة الزمنية حسب الوقت (بدون خلط).
  • [ ] قمت بوضع علامة على السمات المعرضة لخطر تسرب البيانات.
  • [ ] قمت بتوثيق وحدة كل عمود وكتبت التحويلات بشكل صريح.