Satuan 9 / 11

Analisis Data Otomotif dengan Python: End-to-End

Keuntungan:

  • Kemampuan untuk membuat alur kerja analisis berulang yang memuat dan membersihkan data telemetri, pengujian, dan produksi dengan panda
  • Kemampuan untuk memahami dan memverifikasi keluaran baris demi baris sambil menerima kode, atribut, dan bantuan visualisasi dari kecerdasan buatan
  • Kemampuan untuk mengaudit hasil analisis untuk konsistensi unit, kebocoran data, dan reproduktifitas

Di unit sebelumnya, kami menggunakan kecerdasan buatan sebagai "penasihat". Di unit ini, kami melangkah lebih jauh dan membuat alur kerja yang menganalisis data otomotif dengan tangan kami sendiri, menggunakan Python. Tujuannya bukan untuk menjadikan Anda seorang pengembang perangkat lunak; Tujuannya adalah untuk menghasilkan seorang insinyur yang dapat memahami dan memverifikasi kode itu baris demi baris sambil mendapatkan bantuan kode dari AI. Karena kode yang dihasilkan AI bisa saja salah, seperti halnya teks yang dihasilkan AI; mungkin membingungkan volume, membocorkan data, memusatkan kolom salah. Menjalankan kode tanpa memahaminya seperti menerbitkan laporan yang tidak ditandatangani.

Python kenapa? Karena ini adalah standar de facto dalam analisis data: Anda dapat dengan mudah memproses data telemetri, pengujian, dan produksi dengan pustaka pandas (data tabular), numpy (pemrosesan numerik), matplotlib (plot), dan scikit-learn (pembelajaran mesin).

Enam langkah menuju analisis yang dapat direproduksi

Analisis yang solid selalu mengikuti kerangka yang sama:

  1. Load: Membaca data dari file.
  2. Periksa: Dimensi, kolom, tipe data, nilai yang hilang.
  3. Bersih: Hilang/outlier, unit, koreksi stempel waktu.
  4. Ekstrak fitur: Turunkan variabel yang bermakna.
  5. Analisis/model: Statistik, visualisasi, atau model.
  6. Verifikasi dan laporkan: Penyediaan hasil, pemeriksaan volume/kebocoran, pencatatan.
Tip: Saat meminta kode kepada AI, ucapkan “komentari apa yang Anda lakukan di setiap langkah dan tulis asumsi Anda”. Jadi Anda dapat memverifikasi kode saat Anda membacanya.

Contoh langkah demi langkah: analisis telemetri

Kode berikut memuat catatan CAN/telemetri dan melakukan pemeriksaan dasar. (Catatan: pastikan Anda memahami kode sebelum menjalankannya; nama kolom bervariasi bergantung pada data Anda.)

import pandas as pd# 1) Muat: CSV titik-titik, stempel waktu kolom pertamapdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # berapa baris, berapa kolomprint(df.dtypes) # jenis setiap kolom (angka atau teks)print(df.isna().sum()) # jumlah nilai yang hilang per Columnprint(df.describe()) # statistik ringkasan: min, maks, rata-rata

Output deskripsi() adalah kesempatan pertama Anda untuk memverifikasi: jika nilai maksimal kecepatan mesin adalah 45.000 rpm (mesin penumpang pada umumnya ~7.000 rpm), ada kesalahan unit atau sensor.

Perintah pandas yang paling sering digunakan dalam langkah audit dan fungsinya:

perintah

Apa artinya?

Apa yang dikonfirmasinya?

df.bentuk

Jumlah baris/kolom

Apakah itu ukuran yang diharapkan?

df.dtypes

Jenis kolom

Apakah kolom angka sudah menjadi teks?

df.isna().jumlah()

Jumlah nilai yang hilang

Berapa banyak ruang yang ada di sana?

df.deskripsikan()

Min/maks/rata-rata

Apakah secara fisik masuk akal?

df.duplikat().jumlah()

baris duplikat

Apakah ada registrasi ganda?

# 3) Jelas: tandai nilai yang mustahil secara fisik

Perhatian: Jangan langsung menghapus outlier; Pertama-tama pahami mengapa ini merupakan outlier. Apakah ini kejadian nyata (pemanasan mendadak) atau kegagalan sensor? Menghapus secara membabi buta mungkin menyembunyikan kesalahan sebenarnya.

# 4) Ekstrak fitur: laju kenaikan suhu (turunan)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Visualisasi sederhanaimport matplotlib.pyplot sebagai pltplt.plot(df["time"], df["motor_sic"])plt.xlabel("Waktu"); plt.ylabel("Suhu mesin (C)")plt.title("Kursus suhu mesin")plt.show()

Mencegah kebocoran data dengan Python

Kesalahan paling berbahaya saat membangun model prediksi adalah kebocoran data (unit 5): ketika model melihat informasi yang tidak dapat diketahui pada saat prediksi. Aturan utama untuk menghindari hal ini dalam deret waktu: berlatih dengan masa lalu, menguji dengan masa depan - jangan mengacak secara acak.

dari sklearn.model_selection import train_test_split# FALSE: membagi deret waktu secara acak membocorkan masa depan# df[df["time"] > ambang batas] # 20% terakhir di masa depan

Perhatian: train_test_split mengacak data secara default (shuffle=True). Dalam rangkaian waktu, hal ini mengacaukan masa depan dengan pendidikan dan menghasilkan skor tinggi palsu. Jika AI telah melakukan hal ini pada kode yang dihasilkannya, pastikan untuk memperbaikinya.

Konsistensi unit: pembunuh diam-diam

Kesalahan paling berbahaya dalam otomotif adalah kesalahan satuan: km/jam ke m/s, Nm ke lb-ft, bar ke kPa, °C ke K. Menyimpan kamus tentang satuan setiap kolom dalam analisis dan menuliskan konversinya jelas menyelamatkan nyawa.

# Dokumentasikan satuan secara eksplisit = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# Konversi eksplisit jika perlu (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6

Studi kasus kecil

Kasus 1 - Kesalahan tertangkap dengan deskripsikan(). Seorang analis menjalankan kode dari AI dan membuat perkiraan jangkauan; Hasilnya luar biasa tinggi. Ketika kita melihat pada keluaran deskripsi(), kita melihat bahwa kapasitas baterai dimasukkan dalam Wh di beberapa saluran dan dalam kWh di saluran lain (perbedaan 1000 kali). Ketika unit dibawa ke tipe yang seragam, hasilnya meningkat. Kesimpulan: Ringkasan statistik sederhana mencegah prediksi buruk.

Kasus 2 - Jebakan kebingungan. Model keausan rem pekerja magang memiliki akurasi 98% pada set pengujian. Saat kode diperiksa, terlihat bahwa train_test_split(shuffle=True) dan deret waktu tercampur, artinya poin masa depan bocor ke dalam pelatihan. Jika dibagi berdasarkan waktu, akurasinya turun menjadi 80%, tetapi sekarang menjadi realistis. Kesimpulan: Hanya karena kode AI berfungsi, itu tidak benar; Manusia menangkap kebocorannya.

Kasus 3 - Memahami outlier. Dalam catatan ketahanan, kode AI secara otomatis menghapus nilai regangan outlier. Insinyur melihat titik-titik yang dihapus; Inilah saat-saat permulaan retakan yang menarik perhatian pengujian. Penghapusan dihapus dan pelanggaran dimasukkan ke dalam tinjauan terpisah. Hasil: Di bawah "Membersihkan" sinyal sebenarnya dapat dihapus; mempertanyakan setiap langkah.

templat cepat

Templat 1 - Kode permintaan (dengan penjelasan):

Peran: Anda adalah mentor analis data Python. Tugas: Menulis kode yang memuat dan memeriksa CSV telemetri. Konteks: Kolom: waktu, kecepatan (km/jam), engine_sic (C), revolusi (rpm). Kendala: Beri komentar pada setiap baris; Jelaskan pemeriksaan mana yang dilakukan dan alasannya; tambahkan pemeriksaan nilai yang tidak mungkin secara fisik; diam-diam menghapus apa pun. Keluaran: Kode yang dikomentari + keluaran mana yang harus saya lihat dan alasannya.

Templat 2 - Pemeriksaan kebocoran:

Peran: Anda adalah peninjau kode pembelajaran mesin. Tugas: Periksa kode pemisahan pelatihan/pengujian berikut untuk kebocoran data. Konteks: Ini adalah deret waktu (telemetri kendaraan). Batasan: Peringatkan jika ada pengocokan acak; Menyarankan dan membenarkan pemisahan berdasarkan waktu. Keluaran: Temuan + kode yang diperbaiki + penjelasan.

Templat 3 - Validasi unit:

Peran: Anda adalah auditor kualitas data.Tugas: Menyarankan pemeriksaan yang mencari ketidakkonsistenan unit di DataFrame.Konteks: Kapasitas mungkin kWh di beberapa baris dan Wh di baris lainnya.Output: Periksa kode + cara menemukan pola yang mencurigakan.

Templat 4 - Visualisasi + komentar:

Peran: Anda adalah ahli visualisasi data. Tugas: Menulis kode yang memplot pergerakan suhu mesin dan laju kenaikannya. Batasan: Beri label pada sumbu dengan unit; tandai anomali secara visual; jangan mengklaim kesalahan pasti saat menafsirkan grafik. Output: Kode + apa yang harus dicari di grafik.

Perintah lemah / Perintah kuat

Perintah yang lemah:

Bangun model dengan data ini.

Tidak jelas sasaran yang mana, kompartemen yang mana, verifikasi yang mana; AI dapat menghasilkan kode yang acak, bocor, dan buta unit.

Perintah yang kuat:

Peran: Anda adalah mentor Python ML. Tugas: Menulis alur kerja awal untuk memprediksi keausan bantalan rem dan menunjukkan kendala validasi. Konteks: Telemetri deret waktu; target: ketebalan pad yang tersisa. Batasan: Membagi deret waktu berdasarkan waktu (tidak ada pengocokan); tandai atribut yang berisiko mengalami kebocoran data; unit dokumen; menafsirkan setiap langkah; Tuliskan pemeriksaan apa saja yang diperlukan sebelum hasilnya diturunkan ke lapangan. Output: Kode yang dikomentari + daftar periksa verifikasi.

Kesalahan umum

  • Menjalankan kode tanpa memahaminya. Kode AI mungkin juga salah; Baca baris demi baris.
  • Mencampur deret waktu. shuffle=True membocorkan masa depan dan menghasilkan skor palsu.
  • Hapus outlier secara membabi buta. Sinyal sebenarnya (permulaan kesalahan) dapat dihapus.
  • Tidak mendokumentasikan unitnya. Kesalahan seperti km/jam vs m/s, Wh vs kWh bertambah secara diam-diam.
  • Melewatkan langkah deskripsikan()/periksa. Sebagian besar kesalahan muncul di ringkasan statistik pertama.

Singkatnya

  • Python (pandas, numpy, matplotlib, scikit-learn) adalah standar de facto untuk analisis data otomotif.
  • Analisis berulang: memuat, memeriksa, membersihkan, menampilkan, menganalisis, memvalidasi, dan melaporkan.
  • Sangat penting untuk memahami dan memverifikasi kode yang dihasilkan AI baris demi baris; Hanya karena berhasil bukan berarti itu benar.
  • Pertahankan perbedaan masa lalu/masa depan dalam deret waktu; Pengacakan acak menyebabkan kebocoran data.
  • Konsistensi unit dan penafsiran outlier tidak ada, namun merupakan poin penting dalam verifikasi.

Tugas aplikasi

Ambil kumpulan data kecil (telemetri nyata atau sintetis). (1) Mengikuti kerangka enam langkah, buat kode pemuatan dan kontrol dengan Templat 1 dan konfirmasikan bahwa Anda memahami setiap baris. (2) Temukan setidaknya satu nilai mencurigakan di keluaran deskripsikan() dan selidiki alasannya. (3) Dalam tugas prediksi, tentukan waktu pemisahan pelatihan/tes dan periksa risiko kebocoran dengan Templat 2. (4) Dokumentasikan unit setiap kolom yang Anda gunakan dalam kamus.

daftar periksa

  • [ ] Saya menyiapkan analisis dengan kerangka enam langkah.
  • [ ] Saya membaca dan memahami kode yang dihasilkan oleh AI baris demi baris.
  • [ ] Saya mencari nilai yang mencurigakan dengan deskripsikan()/audit.
  • [ ] Saya membagi rangkaian waktu berdasarkan waktu (tanpa pengacakan).
  • [ ] Saya menandai atribut yang berisiko kebocoran data.
  • [] Saya mendokumentasikan unit setiap kolom dan menulis konversinya secara eksplisit.