Jedinica 9 / 11

Analiza automobilskih podataka s Pythonom: End-to-End

Dobici:

  • Sposobnost uspostavljanja ponovljivog tijeka analize koji učitava i čisti telemetrijske, testne i proizvodne podatke s pandama
  • Sposobnost razumijevanja i provjere izlaza redak po redak uz primanje koda, atributa i pomoći u vizualizaciji od umjetne inteligencije
  • Sposobnost revizije rezultata analize za dosljednost jedinice, curenje podataka i ponovljivost

U prethodnim cjelinama koristili smo umjetnu inteligenciju kao "savjetnika". U ovoj jedinici idemo korak dalje i uspostavljamo tijek rada koji vlastitim rukama analizira podatke o automobilima, koristeći Python. Cilj nije učiniti vas programerom softvera; To je stvoriti inženjera koji može razumjeti i provjeriti taj kod redak po redak dok dobiva pomoć koda od umjetne inteligencije. Jer kôd koji proizvodi AI može biti pogrešan, baš kao i tekst koji proizvodi AI; može zbuniti volumen, curiti podatke, centrirati krivi stupac. Pokretanje koda bez razumijevanja je poput objavljivanja nepotpisanog izvješća.

Python zašto? Budući da je to de facto standard u analizi podataka: možete jednostavno obraditi telemetrijske, testne i proizvodne podatke s bibliotekama pandas (tabularni podaci), numpy (numerička obrada), matplotlib (crtež) i scikit-learn (strojno učenje).

Šest koraka do ponovljive analize

Čvrsta analiza uvijek slijedi isti okvir:

  1. Učitaj: Čitanje podataka iz datoteke.
  2. Pregledajte: dimenzije, stupce, vrste podataka, nedostajuće vrijednosti.
  3. Čisto: nedostaje/ispada, jedinica, ispravak vremenske oznake.
  4. Značajka izdvajanja: Izvedite smislene varijable.
  5. Analiza/model: Statistika, vizualizacija ili model.
  6. Provjera i izvješće: Određivanje rezultata, provjera volumena/curenja, snimanje.
Savjet: kada od umjetne inteligencije tražite kod, recite "komentirajte što radite u svakom koraku i napišite svoje pretpostavke." Tako da možete provjeriti kod dok ga čitate.

Primjer korak po korak: analiza telemetrije

Sljedeći kod učitava CAN/telemetrijski zapis i obavlja osnovnu provjeru. (Napomena: provjerite razumijete li kodove prije nego što ih pokrenete; nazivi stupaca razlikuju se ovisno o vašim podacima.)

import pande kao pd# 1) Učitaj: polutočkasti CSV, prvi stupac timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # koliko redaka, koliko stupacaprint(df.dtypes) # tip svakog stupca (broj ili text)print(df.isna().sum()) # broj nedostajućih vrijednosti po stupcuprint(df.describe()) # sumarna statistika: min, max, prosjek

Izlaz describe() je vaša prva prilika za provjeru: ako je maksimalna vrijednost brzine motora 45.000 o/min (tipični putnički motor ~7.000 o/min), postoji kvar jedinice ili senzora.

Najčešće korištene pandas naredbe u koraku revizije i što rade:

naredba

Što znači

Što potvrđuje?

df.oblik

Broj redaka/stupaca

Je li to očekivana veličina?

df.dvrste

Vrste stupaca

Je li stupac s brojevima postao tekst?

df.isna().sum()

Nedostaje broj vrijednosti

Koliko prostora ima?

df.describe()

Min/maks/prosjek

Je li fizički razumno?

df.duplicated().sum()

duplicirani red

Postoji li dvojna registracija?

# 3) Jasno: označite fizički nemoguće vrijednosti

Oprez: Nemojte odmah brisati outlier; Prvo shvatite zašto je to izvanredna vrijednost. Je li to stvarni događaj (naglo zagrijavanje) ili kvar senzora? Slijepo brisanje može sakriti pravu pogrešku.

# 4) Značajka izdvajanja: stopa porasta temperature (derivacija)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Jednostavna vizualizacija, uvoz matplotlib.pyplot kao pltplt.plot(df["vrijeme"], df["motor_sic"])plt.xlabel("Vrijeme"); plt.ylabel("Temperatura motora (C)")plt.title("Tijek temperature motora")plt.show()

Sprječavanje curenja podataka u Pythonu

Najopasnija pogreška pri izgradnji modela predviđanja je curenje podataka (jedinica 5): kada model vidi informacije koje nisu poznate u trenutku predviđanja. Zlatno pravilo za izbjegavanje ovoga u vremenskim serijama: trenirajte s prošlošću, testirajte s budućnošću — bez nasumičnog miješanja.

from sklearn.model_selection import train_test_split# FALSE: nasumično dijeljenje vremenske serije propušta budućnost# df[df["time"] > threshold] # zadnjih 20% budućnosti

Oprez: train_test_split miješa podatke prema zadanim postavkama (shuffle=True). U vremenskoj seriji ovo brka budućnost s obrazovanjem i proizvodi lažnu visoku ocjenu. Ako je umjetna inteligencija to učinila u kodu koji proizvodi, svakako to popravite.

Konzistentnost jedinice: tihi ubojica

Najpodmuklije pogreške u automobilskoj industriji su pogreške jedinica: km/h u m/s, Nm u lb-ft, bar u kPa, °C u K. Vođenje rječnika o jedinicama svakog stupca u analizi i zapisivanje pretvorbi jasno spašava živote.

# Eksplicitno dokumentirajte jedinice = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# Eksplicitna konverzija ako je potrebno (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6

Mini studije slučaja

Slučaj 1 - Pogreška uhvaćena s describe(). Analitičar pokreće kod iz AI ​​i radi procjenu raspona; Rezultat je apsurdno visok. Kada pogledamo describe() output, vidimo da je kapacitet baterije u nekim redcima upisan u Wh, au drugim u kWh (1000 puta razlika). Kada se jedinica dovede do jednoličnog tipa, rezultat se poboljšava. Zaključak: Jednostavna sumarna statistika spriječila je loše predviđanje.

Slučaj 2 - Zamka zabune. Model istrošenosti kočnica pripravnika bio je 98% točan na ispitnom skupu. Kada se kod ispita, može se vidjeti da su train_test_split(shuffle=True) i vremenske serije pomiješane, što znači da buduće točke cure u obuku. Kada se podijeli s vremenom, točnost pada na 80%, ali sada je realna. Zaključak: samo zato što je AI kod radio, nije bio u redu; Čovjek je uhvatio curenje.

Slučaj 3 - Razumijevanje vanjske vrijednosti. U zapisu o trajnosti, AI kod automatski briše izvanredne vrijednosti naprezanja. Inženjer gleda izbrisane točke; Upravo su to bili trenuci pokretanja cracka koji su zanimali test. Brisanje se uklanja, a kršenja se uzimaju u zaseban pregled. Rezultat: Pod "Čišćenje" pravi signal se može izbrisati; propitivati ​​svaki korak.

promptni predlošci

Predložak 1 - Šifra zahtjeva (s objašnjenjem):

Uloga: Vi ste mentor analitičara Python podataka. Zadatak: Napišite kod koji učitava i provjerava telemetrijski CSV. Kontekst: Stupci: vrijeme, brzina (km/h), engine_sic (C), revolucija (rpm). Ograničenje: komentirajte svaki red; Objasnite koja je provjera napravljena i zašto; dodati fizički nemoguću provjeru vrijednosti; tiho ne brišući ništa. Izlaz: Komentirani kod + koji izlaz trebam pogledati i zašto.

Predložak 2 - Pregled curenja:

Uloga: Vi ste recenzent koda za strojno učenje. Zadatak: Provjerite curenje podataka u sljedećem podijeljenom kodu za obuku/test. Kontekst: ovo je vremenski niz (telemetrija vozila). Ograničenje: Upozorenje ako postoji nasumično miješanje; Predložite i obrazložite podjelu po vremenu. Ishod: Nalazi + ispravljeni kod + objašnjenje.

Predložak 3 - Provjera valjanosti jedinice:

Uloga: Vi ste revizor kvalitete podataka. Zadatak: Predložite provjere koje traže nedosljednost jedinica u DataFrameu. Kontekst: Kapacitet može biti kWh u nekim redovima i Wh u drugim. Izlaz: Provjerite kod + kako pronaći sumnjivi uzorak.

Predložak 4 - Vizualizacija + komentar:

Uloga: Vi ste stručnjak za vizualizaciju podataka. Zadatak: Napišite kod koji prikazuje tijek temperature motora i brzinu porasta. Ograničenje: Označite osi jedinicom; vizualno označiti anomaliju; nemojte tražiti konačnu grešku kada tumačite grafikon. Izlaz: Kod + što tražiti u grafikonu.

Slab upit / Jak upit

Slab upit:

Izgradite model s ovim podacima.

Nije jasno koji cilj, koji odjeljak, koja provjera; AI može ispisati šifrirani, nepropusni, jedinično slijepi kod.

Snažan upit:

Uloga: Vi ste Python ML mentor. Zadatak: Napišite početni tijek rada za predviđanje trošenja kočionih pločica i demonstrirajte zamke validacije. Kontekst: telemetrija vremenske serije; cilj: preostala debljina jastučića. Ograničenje: Podijeli vremensku seriju prema vremenu (bez miješanja); atributi zastave u opasnosti od curenja podataka; jedinice dokumenta; interpretirati svaki korak; Zapišite koje su provjere potrebne prije nego što rezultat izađe na teren. Izlaz: Komentirani kod + popis za provjeru.

Uobičajene greške

  • Pokretanje koda bez razumijevanja. AI kod također može biti neispravan; Čitaj red po red.
  • Miješanje vremenskih serija. shuffle=Istina otkriva budućnost i proizvodi lažni rezultat.
  • Naslijepo izbrišite outlier. Stvarni signal (početak kvara) može se obrisati.
  • Nema dokumentiranja jedinice. Pogreške poput km/h u odnosu na m/s, Wh u odnosu na kWh tiho rastu.
  • Preskakanje koraka describe()/check. Većina pogrešaka pojavljuje se u prvoj sumarnoj statistici.

Ukratko

  • Python (pandas, numpy, matplotlib, scikit-learn) je de facto standard analize podataka o automobilima.
  • Ponovljiva analiza: učitaj, pregledaj, očisti, označi, analiziraj, potvrdi i prijavi.
  • Imperativ je razumjeti i provjeriti kod koji AI proizvodi red po red; Samo zato što radi ne znači da je ispravno.
  • Održavati razliku između prošlosti i budućnosti u vremenskim serijama; Nasumično miješanje stvara curenje podataka.
  • Dosljednost jedinice i izvanredno tumačenje tihe su, ali kritične točke provjere.

Zadatak aplikacije

Uzmite mali skup podataka (stvarna ili sintetička telemetrija). (1) Slijedeći okvir od šest koraka, generirajte kod za učitavanje i kontrolu pomoću predloška 1 i potvrdite da razumijete svaki redak. (2) Pronađite barem jednu sumnjivu vrijednost u describe() izlazu i istražite zašto. (3) U zadatku predviđanja, tempirajte razdiobu obuke/testiranja i provjerite rizik od curenja pomoću predloška 2. (4) Dokumentirajte jedinicu svakog stupca koji koristite u rječniku.

popis za provjeru

  • [ ] Postavio sam analizu s okvirom od šest koraka.
  • [ ] Pročitao sam i razumio kod koji je napravio AI red po red.
  • [ ] Tražio sam sumnjive vrijednosti s describe()/audit.
  • [ ] Podijelio sam vremensku seriju prema vremenu (bez miješanja).
  • [ ] Označio sam atribute koji su u opasnosti od curenja podataka.
  • [ ] Dokumentirao sam jedinicu svakog stupca i eksplicitno napisao pretvorbe.