Enhet 9 / 11

Bildataanalys med Python: End-to-End

Vinster:

  • Möjlighet att upprätta ett repeterbart analysarbetsflöde som laddar och rensar telemetri-, test- och produktionsdata med pandor
  • Förmåga att förstå och verifiera utdata rad för rad samtidigt som du får kod, attribut och visualiseringshjälp från artificiell intelligens
  • Förmåga att granska analysresultat för enhetskonsistens, dataläckage och reproducerbarhet

I tidigare enheter använde vi artificiell intelligens som en "rådgivare". I den här enheten går vi ett steg längre och etablerar ett arbetsflöde som analyserar fordonsdata med våra egna händer, med hjälp av Python. Målet är inte att göra dig till en mjukvaruutvecklare; Det är att skapa en ingenjör som kan förstå och verifiera den koden rad för rad samtidigt som den får kodhjälp från AI. Eftersom koden som produceras av AI kan vara felaktig, precis som texten som produceras av AI; kan förvirra volymen, läcka data, centrera fel kolumn. Att köra koden utan att förstå den är som att publicera en osignerad rapport.

Python varför? Eftersom det är de facto-standarden inom dataanalys: du kan enkelt bearbeta telemetri-, test- och produktionsdata med biblioteken pandas (tabelldata), numpy (numerisk bearbetning), matplotlib (plot) och scikit-learn (maskininlärning).

Sex steg till reproducerbar analys

En solid analys följer alltid samma ram:

  1. Ladda: Läs data från filen.
  2. Inspektera: Dimension, kolumner, datatyper, saknade värden.
  3. Rengör: Saknas/avvikande, enhet, tidsstämpelkorrigering.
  4. Extrahera funktion: Härled meningsfulla variabler.
  5. Analys/modell: Statistik, visualisering eller modell.
  6. Verifiera och rapportera: Resultattillhandahållande, volym/läckagekontroll, registrering.
Tips: När du ber AI om kod, säg "kommentera vad du gör vid varje steg och skriv dina antaganden." Så du kan verifiera koden när du läser den.

Steg-för-steg-exempel: telemetrianalys

Följande kod laddar en CAN/telemetripost och utför grundläggande kontroll. (Obs: se till att du förstår koderna innan du kör dem; kolumnnamnen varierar beroende på dina data.)

importera pandor som pd# 1) Ladda: halvprickad CSV, första kolumn timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # hur många rader, hur många kolumntryck(df.dtypes) #texttyp (df.dtypes) #nummertyp eller kolumn(dsumma)(summa av varje kolumn). antal saknade värden per kolumnavtryck(df.describe()) # sammanfattande statistik: min, max, medelvärde

Describe()-utgången är din första möjlighet att verifiera: om motorvarvtalets maxvärde är 45 000 rpm (typisk passagerarmotor ~7 000 rpm) finns det ett enhets- eller sensorfel.

De mest använda pandaskommandona i revisionssteget och vad de gör:

kommando

Vad gör

Vad bekräftar det?

df.form

Antal rader/kolumner

Är det den förväntade storleken?

df.dtypes

Kolumntyper

Har nummerkolumnen blivit text?

df.isna().sum()

Saknar värderäkning

Hur mycket utrymme finns det?

df.describe()

Min/max/genomsnitt

Är det fysiskt rimligt?

df.duplicated().sum()

dubblettrad

Finns det dubbel registrering?

# 3) Rensa: markera fysiskt omöjliga värden

Varning: Ta inte bort avvikelsen omedelbart; Först förstå varför det är en extremist. Är det en verklig händelse (plötslig uppvärmning) eller sensorfel? Blint radering kan dölja det verkliga felet.

# 4) Extrahera funktion: temperaturökningshastighet (derivata)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Enkel visualisering.pyplot pltplt.plot(df["tid"], df["motor_sic"])plt.xlabel("Tid"); plt.ylabel("Motortemperatur (C)")plt.title("Motortemperaturkurs")plt.show()

Förhindrar dataläckage i Python

Det farligaste misstaget när man bygger en prediktionsmodell är dataläckage (enhet 5): när modellen ser information som inte är känd vid prediktionstillfället. Den gyllene regeln för att undvika detta i tidsserier: träna med det förflutna, testa med framtiden - ingen slumpmässig blandning.

från sklearn.model_selection import train_test_split# FALSK: slumpmässig delning av tidsserien läcker framtiden# df[df["tid"] > tröskel] # senaste 20 % framtid

Varning: train_test_split blandar data som standard (shuffle=True). I tidsserien förväxlar detta framtiden med utbildning och ger en falsk hög poäng. Om AI har gjort detta i koden den producerar, se till att fixa det.

Enhetens konsistens: tyst mördare

De mest lömska felen inom bilindustrin är enhetsfel: km/h till m/s, Nm till lb-ft, bar till kPa, °C till K. Att föra en ordbok över vilken enhet varje kolumn är i analysen och att skriva ner omvandlingarna räddar helt klart liv.

# Dokumentera enheterna uttryckligen = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# Explicit konvertering vid behov (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6

Mini fallstudier

Fall 1 - Fel fångade med describe(). En analytiker kör koden från AI och gör en räckviddsuppskattning; Resultatet är absurt högt. När vi tittar på describe()-utgången ser vi att batterikapaciteten anges i Wh på vissa rader och i kWh på andra (1000 gångers skillnad). När enheten bringas till en enhetlig typ förbättras resultatet. Slutsats: En enkel sammanfattande statistik förhindrade en dålig förutsägelse.

Fall 2 - Förvirringsfälla. En praktikants bromsslitagemodell var 98 % korrekt på testsetet. När koden granskas kan man se att train_test_split(shuffle=True) och tidsserierna blandas, vilket innebär att framtida poäng läcker in i träningen. Delat med tid sjunker noggrannheten till 80 %, men den är nu realistisk. Slutsats: Bara för att AI-koden fungerade så var den inte rätt; Människan fångade läckan.

Fall 3 - Förstå avvikelsen. I en hållbarhetspost tar AI-koden automatiskt bort extrema töjningsvärden. Ingenjören tittar på de raderade punkterna; Det var just dessa ögonblick av sprickinitiering som testet var intresserad av. Borttagning tas bort och överträdelser tas i separat granskning. Resultat: Under "Rengöring" kan den verkliga signalen raderas; ifrågasätta varje steg.

snabbmallar

Mall 1 - Begär kod (med förklaring):

Roll: Du är mentor för Python-dataanalytiker. Uppgift: Skriv kod som laddar och kontrollerar en telemetri-CSV. Kontext: Kolumner: tid, hastighet(km/h), engine_sic(C), varv(rpm).Begränsning: Kommentera varje rad; Förklara vilken kontroll som gjordes och varför; lägga till fysiskt omöjlig värdekontroll; raderar ingenting tyst. Utdata: Kommenterad kod + vilken utgång jag ska titta på och varför.

Mall 2 - Läckageinspektion:

Roll: Du är en maskininlärningskodgranskare. Uppgift: Kontrollera följande tränings-/testdelningskod för dataläckor. Sammanhang: Detta är en tidsserie (fordonstelemetri). Begränsning: Varna om det sker slumpmässig blandning; Föreslå och motivera uppdelning efter tid. Utdata: Fynd + korrigerad kod + förklaring.

Mall 3 - Enhetsvalidering:

Roll: Du är en datakvalitetsrevisor. Uppgift: Föreslå kontroller som letar efter enhetsinkonsekvens i en DataFrame. Sammanhang: Kapaciteten kan vara kWh i vissa rader och Wh i andra. Utdata: Kontrollera kod + hur man hittar det misstänkta mönstret.

Mall 4 - Visualisering + kommentar:

Roll: Du är expert på datavisualisering. Uppgift: Skriv kod som plottar motortemperaturförloppet och ökningshastigheten. Begränsning: Märk axlarna med enheten; visuellt markera anomalien; gör inte anspråk på definitivt fel när du tolkar grafen. Utdata: Kod + vad man ska titta efter i grafen.

Svag prompt / Stark prompt

Svag uppmaning:

Bygg en modell med dessa data.

Det är inte klart vilket mål, vilket fack, vilken verifikation; AI kan mata ut kodad, läckande, enhetsblind kod.

Kraftfull uppmaning:

Roll: Du är en Python ML-mentor. Uppgift: Skriv ett första arbetsflöde för att förutsäga slitage på bromsbelägg och visa valideringsfallgropar. Sammanhang: Tidsserietelemetri; mål: återstående dyntjocklek.Begränsning: Dela tidsserier efter tid (ingen blandning); flagga attribut som riskerar dataläckage; dokumentenheter;tolka varje steg; Skriv ner vilka kontroller som krävs innan resultatet går ut i fält. Utdata: Kommenterad kod + verifieringschecklista.

Vanliga misstag

  • Kör koden utan att förstå den. AI-koden kan också vara felaktig; Läs rad för rad.
  • Blanda tidsserier. shuffle=True läcker framtiden och producerar en falsk poäng.
  • Ta bort extremvärdet blint. Den faktiska signalen (debut av fel) kan raderas.
  • Dokumenterar inte enheten. Fel som km/h vs m/s, Wh vs kWh växer tyst.
  • Hoppa över steget describe()/check. De flesta fel visas i den första sammanfattande statistiken.

Sammanfattningsvis

  • Python (pandas, numpy, matplotlib, scikit-learn) är de facto-standarden för analys av fordonsdata.
  • Repeterbar analys: ladda, inspektera, rengör, presentera, analysera, validera och rapportera.
  • Det är absolut nödvändigt att förstå och verifiera koden som AI producerar rad för rad; Bara för att det fungerar betyder det inte att det är rätt.
  • Upprätthålla skillnaden mellan tidigare och framtida i tidsserier; Slumpmässig blandning skapar dataläckage.
  • Enhetskonsistens och avvikande tolkning är tysta men kritiska verifieringspunkter.

Applikationsuppgift

Ta en liten datamängd (verklig eller syntetisk telemetri). (1) Följ ramverket i sex steg, generera laddnings- och kontrollkoden med mall 1 och bekräfta att du förstår varje rad. (2) Hitta minst ett misstänkt värde i describe()-utgången och undersök varför. (3) I en förutsägelseuppgift, tajma tränings-/testdelningen och kontrollera risken för läckage med mall 2. (4) Dokumentera enheten för varje kolumn du använder i en ordbok.

checklista

  • [ ] Jag satte upp analysen med ett ramverk i sex steg.
  • [ ] Jag läste och förstod koden som produceras av AI rad för rad.
  • [ ] Jag letade efter misstänkta värden med describe()/audit.
  • [ ] Jag delar upp tidsserien efter tid (ingen blandning).
  • [ ] Jag markerade de attribut som riskerar dataläckage.
  • [ ] Jag dokumenterade enheten för varje kolumn och skrev omvandlingarna explicit.