Unitate 9 / 11

Analiza datelor auto cu Python: de la capăt la capăt

Câștiguri:

  • Capacitatea de a stabili un flux de lucru de analiză repetabil, care încarcă și curăță datele de telemetrie, de testare și de producție cu panda
  • Abilitatea de a înțelege și de a verifica ieșirea linie cu linie în timp ce primiți cod, atribute și asistență pentru vizualizare de la inteligența artificială
  • Abilitatea de a audita rezultatele analizei pentru coerența unității, scurgerea datelor și reproductibilitatea

În unitățile anterioare, am folosit inteligența artificială ca un „consilier”. În această unitate, facem un pas mai departe și stabilim un flux de lucru care analizează datele auto cu propriile mâini, folosind Python. Scopul nu este de a te face un dezvoltator de software; Este de a face un inginer care poate înțelege și verifica acel cod linie cu linie în timp ce primește asistență pentru cod de la AI. Pentru că codul produs de AI poate fi defect, la fel ca textul produs de AI; poate confunda volumul, scurge date, centra coloana greșită. Rularea codului fără a-l înțelege este ca și cum ați publica un raport nesemnat.

Python de ce? Deoarece este standardul de facto în analiza datelor: puteți procesa cu ușurință datele de telemetrie, de testare și de producție cu biblioteci panda (date tabulare), numpy (procesare numerică), matplotlib (parcelare) și scikit-learn (învățare automată).

Șase pași pentru o analiză reproductibilă

O analiză solidă urmează întotdeauna același cadru:

  1. Încărcare: Citiți datele din fișier.
  2. Inspectați: dimensiune, coloane, tipuri de date, valori lipsă.
  3. Curățare: lipsă/outlier, unitate, corecție marca temporală.
  4. Extragere caracteristică: Deduceți variabile semnificative.
  5. Analiză/model: statistici, vizualizare sau model.
  6. Verificați și raportați: furnizarea rezultatelor, verificarea volumului/scurgerii, înregistrare.
Sfat: Când cereți codul AI, spuneți „comentați ce faceți la fiecare pas și scrieți-vă ipotezele”. Deci, puteți verifica codul pe măsură ce îl citiți.

Exemplu pas cu pas: analiza telemetriei

Următorul cod încarcă o înregistrare CAN/telemetrie și efectuează verificări de bază. (Notă: asigurați-vă că înțelegeți codurile înainte de a le executa; numele coloanelor variază în funcție de datele dvs.)

importați panda ca pd# 1) Încărcați: CSV semi-punct, prima coloană timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # câte rânduri, câte columnsprint(df.dtypes) (df.dtypes) # tipul fiecărei coloană) (număr sau text). numărul de valori lipsă pe coloanprint(df.describe()) # statistici rezumate: min, max, medie

Ieșirea descrie() este prima dvs. oportunitate de a verifica: dacă valoarea maximă a turației motorului este de 45.000 rpm (motor tipic pentru pasageri ~7.000 rpm), există o defecțiune a unității sau a senzorului.

Cele mai frecvent utilizate comenzi panda în etapa de auditare și ceea ce fac:

comanda

Ce face

Ce confirma?

df.forma

Numărul de rânduri/coloane

Este dimensiunea așteptată?

df.dtypes

Tipuri de coloane

Coloana numerelor a devenit text?

df.isna().sum()

Număr de valori lipsă

Cât spațiu este?

df.describe()

Min/max/medie

Este fizic rezonabil?

df.duplicated().sum()

rând duplicat

Există înregistrare dublă?

# 3) Clar: marcați valorile fizic imposibile

Atenție: nu ștergeți imediat valorile aberante; În primul rând, înțelegeți de ce este o situație anormală. Este un eveniment real (încălzire bruscă) sau defecțiune a senzorului? Ștergerea orbește poate ascunde adevărata greșeală.

# 4) Caracteristica de extragere: rata de creștere a temperaturii (derivată) df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Simplu vizualizationimport matplotlib],plt. df["motor_sic"])plt.xlabel("Timp"); plt.ylabel(„Temperatura motorului (C)”) plt.title(„Cursul temperaturii motorului”) plt.show()

Prevenirea scurgerii de date în Python

Cea mai periculoasă greșeală la construirea unui model de predicție este scurgerea de date (unitatea 5): atunci când modelul vede informații care nu pot fi cunoscute în momentul predicției. Regula de aur pentru a evita acest lucru în serii cronologice: antrenează-te cu trecutul, testează cu viitorul - fără amestecare aleatorie.

din sklearn.model_selection import train_test_split# FALSE: împărțirea aleatorie a seriei de timp duce la scurgeri de viitor# df[df["time"] > threshold] # ultimele 20% viitor

Atenție: train_test_split amestecă datele în mod implicit (shuffle=True). În seria temporală, acest lucru confundă viitorul cu educația și produce un scor mare fals. Dacă AI a făcut acest lucru în codul pe care îl produce, asigurați-vă că îl remediați.

Consistența unității: ucigaș tăcut

Cele mai insidioase erori în domeniul auto sunt erorile de unitate: km/h în m/s, Nm în lb-ft, bar în kPa, °C în K. Păstrarea unui dicționar cu care este unitatea fiecărei coloane în analiză și notarea conversiilor salvează în mod clar vieți.

# Documentați unitățile în mod explicit = {"viteză": "km/h", "motor_sic": "C", "pressure": "bar"}# Conversie explicită dacă este necesar (km/h -> m/s)df["speed_ms"] = df["viteza"] / 3.6

Mini studii de caz

Cazul 1 - Eroare surprinsă cu descrie(). Un analist rulează codul din AI și face o estimare a intervalului; Rezultatul este absurd de mare. Când ne uităm la ieșirea descrie() , vedem că capacitatea bateriei este introdusă în Wh în unele linii și în kWh în altele (diferența de 1000 de ori). Când unitatea este adusă la un tip uniform, rezultatul se îmbunătățește. Concluzie: O statistică rezumată simplă a prevenit o predicție proastă.

Cazul 2 - Capcana confuziei. Modelul de uzură a frânelor al unui stagiar a fost 98% precis pe setul de testare. Când codul este examinat, se poate observa că train_test_split(shuffle=True) și seria temporală sunt amestecate, ceea ce înseamnă că punctele viitoare se scurg în antrenament. Când este împărțită în timp, precizia scade la 80%, dar acum este realistă. Concluzie: Doar pentru că codul AI a funcționat, nu a fost corect; Omul a prins scurgerea.

Cazul 3 - Înțelegerea valorii aberante. Într-o înregistrare de durabilitate, codul AI șterge automat valorile aberante ale deformarii. Inginerul se uită la punctele șterse; Acestea au fost exact momentele de inițiere a fisurii de care a fost interesat testul. Ștergerea este eliminată și încălcările sunt luate în examinare separată. Rezultat: Sub „Curățare” semnalul real poate fi șters; pune la îndoială fiecare pas.

șabloane prompte

Șablon 1 - Cod de solicitare (cu explicație):

Rol: Sunteți mentor de analist de date Python. Sarcină: Scrieți cod care încarcă și verifică un CSV de telemetrie. Context: Coloane: timp, viteză (km/h), motor_sic(C), revoluție (rpm). Constrângere: Comentați fiecare rând; Explicați ce verificare a fost efectuată și de ce; adăugați verificarea valorii imposibilă fizic; ștergând nimic în tăcere.Ieșire: cod comentat + ce ieșire ar trebui să mă uit și de ce.

Modelul 2 - Inspecția scurgerilor:

Rol: sunteți un examinator de cod de învățare automată. Sarcină: Verificați următorul cod împărțit de instruire/test pentru scurgeri de date. Context: Aceasta este o serie temporală (telemetria vehiculului). Constrângere: Avertizați dacă există amestecare aleatorie; Sugerați și justificați împărțirea în timp. Rezultat: Constatări + cod corectat + explicație.

Șablon 3 - Validarea unității:

Rol: Sunteți un auditor de calitate a datelor. Sarcină: Sugerați verificări care caută inconsecvența unității într-un DataFrame. Context: Capacitatea poate fi kWh pe unele rânduri și Wh în altele. Ieșire: Verificați codul + cum să găsiți modelul suspect.

Șablon 4 - Vizualizare + comentariu:

Rol: Sunteți expert în vizualizarea datelor. Sarcină: Scrieți codul care grafică cursul temperaturii motorului și rata de creștere. Constrângere: Etichetați axele cu unitatea; marcați vizual anomalia; nu pretindeți vina definitivă atunci când interpretați graficul. Ieșire: Cod + ce să căutați în grafic.

Prompt slab / Prompt puternic

Prompt slab:

Construiți un model cu aceste date.

Nu este clar care țintă, ce compartiment, ce verificare; AI poate scoate cod amestecat, cu scurgeri, unitate-orb.

Solicitare puternică:

Rol: Sunteți un mentor Python ML. Sarcină: Scrieți un flux de lucru inițial pentru a prezice uzura plăcuțelor de frână și pentru a demonstra capcanele de validare. Context: telemetrie în serie de timp; țintă: grosimea tamponului rămasă. Constrângere: Serii de timp împărțite în funcție de timp (fără amestecare); semnalați atributele cu risc de scurgere de date; unități de documentare;interpretează fiecare pas; Notați ce verificări sunt necesare înainte ca rezultatul să iasă pe teren. Ieșire: cod comentat + listă de verificare.

Greșeli comune

  • Rularea codului fără a-l înțelege. Codul AI poate fi, de asemenea, defect; Citiți rând cu rând.
  • Amestecarea seriilor temporale. shuffle=True scurge viitorul și produce un scor fals.
  • Ștergeți orbește valoarea anormală. Semnalul real (declanșarea defecțiunii) poate fi șters.
  • Nu se documentează unitatea. Erori precum km/h vs m/s, Wh vs kWh cresc silențios.
  • Sari peste pasul descrie()/verificare. Cele mai multe erori apar în primele statistici rezumative.

Pe scurt

  • Python (pandas, numpy, matplotlib, scikit-learn) este standardul de facto al analizei datelor auto.
  • Analiză repetabilă: încărcați, inspectați, curățați, caracteristici, analizați, validați și raportați.
  • Este imperativ să înțelegeți și să verificați codul pe care AI îl produce linie cu linie; Doar pentru că funcționează nu înseamnă că este corect.
  • Menține distincția trecut/viitor în seriile de timp; Amestecarea aleatorie creează scurgeri de date.
  • Consecvența unității și interpretarea valorii aberante sunt puncte silențioase, dar critice de verificare.

Sarcina de aplicare

Luați un set mic de date (telemetrie reală sau sintetică). (1) Urmând cadrul în șase pași, generați codul de încărcare și control cu ​​șablonul 1 și confirmați că înțelegeți fiecare linie. (2) Găsiți cel puțin o valoare suspectă în rezultatul describe() și investigați de ce. (3) Într-o sarcină de predicție, cronometrați împărțirea antrenamentului/testului și verificați riscul de scurgere cu șablonul 2. (4) Documentați unitatea fiecărei coloane pe care o utilizați într-un dicționar.

lista de verificare

  • [ ] Am configurat analiza cu un cadru în șase pași.
  • [ ] Am citit și am înțeles codul produs de AI rând cu rând.
  • [ ] Am căutat valori suspecte cu describe()/audit.
  • [ ] Am împărțit seria temporală în funcție de timp (fără amestecare).
  • [ ] Am marcat atributele care sunt expuse riscului de scurgere de date.
  • [ ] Am documentat unitatea fiecărei coloane și am scris conversiile în mod explicit.