Jednotka 9 / 11

Analýza automobilových dát s Pythonom: End-to-End

zisky:

  • Schopnosť vytvoriť opakovateľný analytický pracovný tok, ktorý načíta a vyčistí telemetrické, testovacie a produkčné údaje s pandami
  • Schopnosť porozumieť a overiť výstup riadok po riadku a zároveň získať pomoc s kódom, atribútmi a vizualizáciou od umelej inteligencie
  • Schopnosť auditovať výsledky analýzy z hľadiska jednotnosti, úniku údajov a reprodukovateľnosti

V predchádzajúcich celkoch sme umelú inteligenciu používali ako „poradcu“. V tejto jednotke ideme o krok ďalej a vytvárame pracovný postup, ktorý analyzuje automobilové údaje vlastnými rukami pomocou Pythonu. Cieľom nie je urobiť z vás vývojára softvéru; Je to urobiť inžiniera, ktorý dokáže pochopiť a overiť tento kód riadok po riadku a zároveň získať pomoc s kódom od AI. Pretože kód vytvorený AI môže byť chybný, rovnako ako text vytvorený AI; môže zmiasť objem, únik údajov, nesprávny stred stĺpca. Spustenie kódu bez jeho pochopenia je ako zverejnenie nepodpísanej správy.

Python prečo? Pretože ide o de facto štandard v analýze údajov: môžete jednoducho spracovať telemetrické, testovacie a produkčné údaje pomocou knižníc pandas (tabuľkové údaje), numpy (numerické spracovanie), matplotlib (zápletka) a scikit-learn (strojové učenie).

Šesť krokov k reprodukovateľnej analýze

Spoľahlivá analýza sa vždy riadi rovnakým rámcom:

  1. Načítať: Čítanie údajov zo súboru.
  2. Kontrola: dimenzia, stĺpce, typy údajov, chýbajúce hodnoty.
  3. Čisté: Chýbajúce/odľahlé hodnoty, jednotka, oprava časovej pečiatky.
  4. Funkcia extrahovania: Odvodzujte zmysluplné premenné.
  5. Analýza/model: Štatistika, vizualizácia alebo model.
  6. Overte a nahláste: Poskytovanie výsledkov, kontrola objemu/úniku, zaznamenávanie.
Tip: Keď požiadate AI o kód, povedzte „komentujte, čo robíte v každom kroku, a napíšte svoje predpoklady“. Takže si môžete overiť kód pri jeho čítaní.

Príklad krok za krokom: telemetrická analýza

Nasledujúci kód načíta CAN/telemetrický záznam a vykoná základnú kontrolu. (Poznámka: Pred spustením kódov sa uistite, že rozumiete kódom; názvy stĺpcov sa líšia v závislosti od vašich údajov.)

importovať pandy ako pd# 1) Načítať: polobodkovaný CSV, prvý stĺpec timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # koľko riadkov, koľko stĺpcovprint(df.dtypes) # typ každého stĺpca) #df. počet chýba text hodnôt) print(na počet alebo počet chýba text hodnôt) za columnprint(df.describe()) # súhrnná štatistika: min, max, priemer

Výstup description() je vašou prvou príležitosťou na overenie: ak je maximálna hodnota otáčok motora 45 000 ot./min (typický motor pre cestujúcich ~ 7 000 ot./min.), došlo k poruche jednotky alebo snímača.

Najčastejšie používané príkazy pandas v kroku auditu a čo robia:

príkaz

Čo robí

Čo to potvrdzuje?

df.tvar

Počet riadkov/stĺpcov

Je to očakávaná veľkosť?

df.dtypes

Typy stĺpcov

Stal sa stĺpec s číslom textom?

df.isna().sum()

Chýba počet hodnôt

Koľko miesta je tam?

df.describe()

Min/max/priemer

Je to fyzicky rozumné?

df.duplicated().sum()

duplicitný riadok

Existuje duálna registrácia?

# 3) Jasné: označte fyzicky nemožné hodnoty

Upozornenie: Odľahlú hodnotu neodstraňujte okamžite; Najprv pochopte, prečo je to mimochodom. Je to skutočná udalosť (náhle zahriatie) alebo porucha snímača? Slepé vymazanie môže skryť skutočnú chybu.

# 4) Funkcia extrakcie: rýchlosť nárastu teploty (derivát)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Jednoduchá vizualizácia matplotlibization.py pltplt.plot(df["čas"], df["motor_sic"])plt.xlabel("Čas"); plt.ylabel("Teplota motora (C)") plt.title("Priebeh teploty motora")plt.show()

Zabránenie úniku údajov v Pythone

Najnebezpečnejšou chybou pri zostavovaní predikčného modelu je únik údajov (jednotka 5): keď model vidí informácie, ktoré v čase predikcie nemôžu byť známe. Zlaté pravidlo, ako sa tomu v časových radoch vyhnúť: trénujte s minulosťou, testujte s budúcnosťou – žiadne náhodné prehadzovanie.

from sklearn.model_selection import train_test_split# FALSE: náhodné rozdelenie časových radov uniká budúcnosť# df[df["time"] > prah] # posledných 20 % budúcnosť

Upozornenie: train_test_split štandardne zamieša dáta (shuffle=True). V časových radoch si to mýli budúcnosť so vzdelaním a vytvára falošne vysoké skóre. Ak to AI urobila v kóde, ktorý vytvára, nezabudnite to opraviť.

Konzistencia jednotky: tichý zabijak

Najzákernejšie chyby v automobilizme sú jednotkové chyby: km/h na m/s, Nm na lb-ft, bar na kPa, °C na K. Vedenie slovníka, aká je jednotka každého stĺpca pri analýze, a zapisovanie prepočtov jednoznačne zachraňuje životy.

# Explicitne zdokumentujte jednotky = {"rýchlosť": "km/h", "motor_sic": "C", "tlak": "bar"# V prípade potreby explicitný prevod (km/h -> m/s)df["speed_ms"] = df["rýchlosť"] / 3,6

Mini prípadové štúdie

Prípad 1 – Chyba zachytená s description(). Analytik spustí kód z AI a urobí odhad rozsahu; Výsledok je absurdne vysoký. Keď sa pozrieme na výstup description(), vidíme, že kapacita batérie je v niektorých riadkoch zadaná vo Wh a v iných v kWh (1000-násobný rozdiel). Keď sa jednotka dostane na jednotný typ, výsledok sa zlepší. Záver: Jednoduchá súhrnná štatistika zabránila zlej predpovedi.

Prípad 2 – Pasca na zmätok. Model opotrebovania bŕzd stážistu bol na testovacej súprave presný na 98 %. Keď je kód preskúmaný, je možné vidieť, že train_test_split(shuffle=True) a časové rady sú zmiešané, čo znamená, že budúce body unikajú do tréningu. Pri delení časom presnosť klesne na 80 %, no teraz je to už reálne. Záver: Len preto, že kód AI fungoval, nebolo to správne; Človek zachytil únik.

Prípad 3 – Pochopenie odľahlej hodnoty. V zázname trvanlivosti kód AI automaticky vymaže extrémne hodnoty napätia. Inžinier sa pozrie na vymazané body; Toto boli presne tie momenty spustenia cracku, o ktoré sa test zaujímal. Vymazanie sa odstráni a porušenia sa posudzujú samostatne. Výsledok: V časti "Čistenie" je možné skutočný signál vymazať; pýtať sa na každom kroku.

šablóny výzvy

Šablóna 1 – Kód požiadavky (s vysvetlením):

Úloha: Ste mentorom dátového analytika Pythonu. Úloha: Napíšte kód, ktorý načíta a skontroluje telemetrický CSV. Kontext: Stĺpce: čas, rýchlosť (km/h), motor_sic(C), otáčky (ot./min.). Obmedzenie: Zakomentujte každý riadok; Vysvetlite, ktorá kontrola bola vykonaná a prečo; pridať fyzicky nemožnú kontrolu hodnoty; tiché mazanie nič.Výstup: Komentovaný kód + ktorý výstup si mám pozrieť a prečo.

Šablóna 2 – Kontrola tesnosti:

Úloha: Ste kontrolórom kódu strojového učenia. Úloha: Skontrolujte, či v nasledujúcom tréningovom/testovacom kóde nedochádza k úniku údajov. Kontext: Toto je časový rad (telemetria vozidla). Obmedzenie: Upozornenie, ak dôjde k náhodnému miešaniu; Navrhnite a zdôvodnite rozdelenie podľa času. Výstup: Zistenia + opravený kód + vysvetlenie.

Šablóna 3 – Overenie jednotky:

Úloha: Ste audítor kvality údajov. Úloha: Navrhnite kontroly, ktoré hľadajú nekonzistentnosť jednotiek v DataFrame. Kontext: Kapacita môže byť v niektorých riadkoch kWh a v iných Wh. Výstup: Skontrolujte kód + ako nájsť podozrivý vzor.

Šablóna 4 – Vizualizácia + komentár:

Úloha: Ste odborník na vizualizáciu údajov. Úloha: Napíšte kód, ktorý vykreslí priebeh teploty motora a rýchlosť nárastu. Obmedzenie: Označte osi jednotkou; vizuálne označte anomáliu; neuplatňujte pri interpretácii grafu definitívnu chybu. Výstup: Kód + čo hľadať v grafe.

Slabá výzva / Silná výzva

Slabá výzva:

Vytvorte model s týmito údajmi.

Nie je jasné, ktorý cieľ, ktoré oddelenie, aké overenie; Umelá inteligencia môže vydávať zakódovaný, netesný, jednotkovo slepý kód.

Výkonná výzva:

Úloha: Ste mentor Python ML. Úloha: Napíšte úvodný pracovný postup na predpovedanie opotrebovania brzdových doštičiek a ukážte úskalia overovania. Kontext: Telemetria časových radov; cieľ: zostávajúca hrúbka podložky. Obmedzenie: Rozdelenie časových radov podľa času (bez miešania); atribúty označenia ohrozené únikom údajov; jednotky dokumentu;interpretovať každý krok; Zapíšte si, aké kontroly sú potrebné predtým, ako sa výsledok dostane do terénu. Výstup: Komentovaný kód + kontrolný zoznam overenia.

Časté chyby

  • Spustenie kódu bez toho, aby ste mu rozumeli. AI kód ​​môže byť tiež chybný; Čítajte riadok po riadku.
  • Miešanie časových radov. shuffle=True uniká do budúcnosti a vytvára falošné skóre.
  • Slepo odstráňte odľahlú hodnotu. Aktuálny signál (nástup poruchy) možno vymazať.
  • Nedokumentovanie jednotky. Chyby ako km/h vs. m/s, Wh vs kWh ticho rastú.
  • Preskočenie kroku description()/check. Väčšina chýb sa objavuje v prvej súhrnnej štatistike.

V súhrne

  • Python (pandy, numpy, matplotlib, scikit-learn) je de facto štandardom analýzy automobilových dát.
  • Opakovateľná analýza: zaťaženie, kontrola, čistenie, funkcia, analýza, overenie a správa.
  • Je nevyhnutné pochopiť a overiť kód, ktorý AI vytvára riadok po riadku; To, že to funguje, neznamená, že je to správne.
  • Zachovať rozdiel medzi minulosťou a budúcnosťou v časových radoch; Náhodné miešanie spôsobuje únik údajov.
  • Konzistencia jednotiek a interpretácia odľahlých hodnôt sú tiché, ale kritické body overovania.

Aplikačná úloha

Vezmite malý súbor údajov (skutočnú alebo syntetickú telemetriu). (1) Podľa šesťstupňového rámca vygenerujte zavádzací a riadiaci kód pomocou šablóny 1 a potvrďte, že rozumiete každému riadku. (2) Nájdite aspoň jednu podozrivú hodnotu vo výstupe description() a zistite prečo. (3) V úlohe predpovedania načasujte rozdelenie školenia/testu a skontrolujte riziko úniku pomocou šablóny 2. (4) Zdokumentujte jednotku každého stĺpca, ktorý používate, do slovníka.

kontrolný zoznam

  • [ ] Nastavil som analýzu pomocou šesťstupňového rámca.
  • [ ] Čítal som a porozumel kódu vytvorenému AI riadok po riadku.
  • [ ] Hľadal som podozrivé hodnoty pomocou description()/audit.
  • [ ] Časový rad som rozdelil podľa času (bez prehadzovania).
  • [ ] Označil som atribúty, ktoré sú ohrozené únikom dát.
  • [ ] Zdokumentoval som jednotku každého stĺpca a prevody som napísal explicitne.