Egység 9 / 11

Autóipari adatok elemzése Python segítségével: végponttól végéig

Nyereség:

  • Képes megismételhető elemzési munkafolyamat létrehozására, amely betölti és megtisztítja a telemetriai, teszt- és termelési adatokat pandákkal
  • Képes a kimenet soronkénti megértésére és ellenőrzésére, miközben kódot, attribútumokat és vizualizációs segítséget kap a mesterséges intelligenciától
  • Az elemzési eredmények ellenőrzésének képessége az egységkonzisztencia, az adatszivárgás és a reprodukálhatóság érdekében

A korábbi egységekben „tanácsadóként” használtuk a mesterséges intelligenciát. Ebben az egységben egy lépéssel tovább megyünk, és létrehozunk egy munkafolyamatot, amely saját kezűleg, Python segítségével elemzi az autóipari adatokat. Nem az a cél, hogy szoftverfejlesztővé váljon; Olyan mérnököt kell készíteni, aki képes megérteni és soronként ellenőrizni a kódot, miközben kódot kap az AI-tól. Mert az AI által előállított kód hibás lehet, akárcsak az AI által előállított szöveg; összekeverheti a kötetet, kiszivároghat az adatok, rosszul középre állíthatja az oszlopot. A kód futtatása anélkül, hogy megértené, olyan, mint egy aláírás nélküli jelentés közzététele.

Python miért? Mert ez a de facto szabvány az adatelemzésben: könnyen feldolgozhatók a telemetriai, tesztelési és gyártási adatok panda (táblázatos adatok), numpy (numerikus feldolgozás), matplotlib (plot) és scikit-learn (gépi tanulás) könyvtárakkal.

Hat lépés a reprodukálható elemzéshez

A szilárd elemzés mindig ugyanazt a keretet követi:

  1. Betöltés: Adatok beolvasása a fájlból.
  2. Ellenőrzés: dimenzió, oszlopok, adattípusok, hiányzó értékek.
  3. Tiszta: Hiányzó/kiugró érték, mértékegység, időbélyeg-javítás.
  4. Funkció kivonása: Értelmes változók származtatása.
  5. Elemzés/modell: Statisztikák, vizualizáció vagy modell.
  6. Ellenőrzés és jelentés: Eredmény biztosítása, térfogat/szivárgás ellenőrzés, rögzítés.
Tipp: Amikor kódot kér az AI-tól, mondja azt, hogy „minden lépésnél írja le, mit csinál, és írja le a feltételezéseit”. Így olvasás közben ellenőrizheti a kódot.

Példa lépésről lépésre: telemetriai elemzés

A következő kód betölt egy CAN/telemetriai rekordot, és elvégzi az alapvető ellenőrzéseket. (Megjegyzés: győződjön meg arról, hogy megértette a kódokat, mielőtt futtatná őket; az oszlopnevek az adatoktól függően változnak.)

pandák importálása pd# 1) Betöltés: félig pontozott CSV, első oszlop timetampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # hány sor, hány oszlopnyomtatás(df.dtypes) # minden egyes oszlop típusa (df.sum(isna text)(száma vagy szöveg) értékek oszlopnyomtatásonként(df.describe()) # összefoglaló statisztika: min, max, átlag

A description() kimenet az első lehetőség, hogy ellenőrizze: ha a motor fordulatszáma max. 45 000 ford./perc (tipikus utasmotor ~7000 ford./perc), akkor egység- vagy érzékelőhiba van.

A leggyakrabban használt pandaparancsok az auditálási lépésben és mit csinálnak:

parancsot

Mit tesz

Mit erősít meg?

df.shape

Sorok/oszlopok száma

A várt méret?

df.dtypes

Oszloptípusok

A számoszlop szöveggé vált?

df.isna().sum()

Hiányzó értékszám

Mennyi hely van?

df.describe()

Min/max/átlag

Fizikailag ésszerű?

df.duplicated().sum()

ismétlődő sor

Van kettős regisztráció?

# 3) Clear: fizikailag lehetetlen értékek megjelölése

Figyelem: Ne törölje azonnal a kiugró értéket; Először értse meg, miért ez a kiugró érték. Valós esemény (hirtelen felmelegedés) vagy szenzorhiba? A vak törlés elrejtheti a valódi hibát.

# 4) Kivonat jellemző: hőmérséklet-emelkedési sebesség (derivatíva)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()#libimport astplot visualization# 5. pltplt.plot(df["idő"], df["motor_sic"])plt.xlabel("Idő"); plt.ylabel("Motor hőmérséklet (C)")plt.title("Motor hőmérséklet-folyamata")plt.show()

Adatszivárgás megakadályozása Pythonban

Az előrejelzési modell felépítésénél a legveszélyesebb hiba az adatszivárgás (5. egység): amikor a modell olyan információkat lát, amelyek az előrejelzés időpontjában nem ismertek. Az aranyszabály ennek elkerülésére az idősorokban: edz a múlttal, tesztelj a jövővel – nincs véletlenszerű keverés.

from sklearn.model_selection import train_test_split# FALSE: az idősor véletlenszerű felosztása kiszivárogtatja a jövőt# df[df["idő"] > küszöb] # utolsó 20% jövő

Figyelem: a train_test_split alapértelmezés szerint megkeveri az adatokat (shuffle=True). Az idősorokban ez összekeveri a jövőt az oktatással, és hamis magas pontszámot ad. Ha az AI megtette ezt az általa előállított kódban, mindenképpen javítsa ki.

Az egység konzisztenciája: csendes gyilkos

Az autóiparban a legravatalosabb hibák az egységhibák: km/h-tól m/s-ig, Nm-től lb-ft-ig, bar-tól kPa-ig, °C-tól K-ig. Ha az elemzésben szótárt vezetünk arról, hogy az egyes oszlopok mekkora mértékegységei, és az átszámítások feljegyzése egyértelműen életeket menthet meg.

# A mértékegységeket kifejezetten dokumentálja = {"sebesség": "km/h", "motor_sic": "C", "nyomás": "bar"}# Explicit átalakítás, ha szükséges (km/h -> m/s)df["speed_ms"] = df["sebesség"] / 3.6

Mini esettanulmányok

1. eset - Hiba történt a description()-ben. Egy elemző lefuttatja a kódot az AI-ból, és becslést készít; Az eredmény abszurd magas. Ha megnézzük a description() kimenetet, azt látjuk, hogy az akkumulátor kapacitását egyes sorokban Wh-ban, máshol kWh-ban adják meg (1000-szeres eltérés). Ha az egységet egységes típusra állítják, az eredmény javul. Következtetés: Egy egyszerű összefoglaló statisztika megakadályozta a rossz előrejelzést.

2. eset – Zavarcsapda. Egy gyakornok fékkopási modellje 98%-os pontosságú volt a tesztkészleten. A kód vizsgálatakor látható, hogy a train_test_split(shuffle=True) és az idősorok keverednek, vagyis jövőbeli pontok szivárognak be a képzésbe. Idővel elosztva a pontosság 80%-ra csökken, de most már reális. Következtetés: Csak azért, mert az AI kód ​​működött, nem volt helyes; Ember elkapta a szivárgást.

3. eset – A kiugró érték megértése. A tartóssági rekordban az AI-kód automatikusan törli a kiugró alakváltozási értékeket. A mérnök megnézi a törölt pontokat; Pontosan ezek voltak a repedés inicializálásának pillanatai, amelyek érdekelték a tesztet. A törlést eltávolítják, és a szabálysértéseket külön felülvizsgálják. Eredmény: A "Tisztítás" alatt a valódi jel törölhető; kérdés minden lépésben.

prompt sablonok

1. sablon – Kérési kód (magyarázattal):

Szerep: Ön Python adatelemző mentor.Feladat: Írjon kódot, amely betölti és ellenőrzi a telemetriai CSV-t.Kontextus: Oszlopok: idő, sebesség(km/h), engine_sic(C), fordulat(rpm).Kényszer: Minden sorba írjon megjegyzést; Magyarázza el, melyik ellenőrzést végezték el és miért; fizikailag lehetetlen értékellenőrzés hozzáadása; csendben semmi törlése.Kimenet: Kommentált kód + melyik kimenetet nézzem meg és miért.

2. sablon – Szivárgásvizsgálat:

Szerep: Ön gépi tanulási kódellenőr. Feladat: Ellenőrizze a következő képzési/teszt felosztási kódot adatszivárgások szempontjából. Kontextus: Ez egy idősor (jármű telemetria). Kényszer: Figyelmeztetés, ha véletlenszerű keverés történik; Javasolja és indokolja az idő szerinti felosztást. Kimenet: megállapítások + javított kód + magyarázat.

3. sablon – Egységellenőrzés:

Szerep: Ön egy adatminőség-ellenőr.Feladat: Javasoljon ellenőrzéseket, amelyek az egységnyi következetlenséget keresik egy DataFrame-ben.Kontextus: A kapacitás egyes sorokban kWh, másokban Wh lehet.Kimenet: Ellenőrizze a kódot + hogyan találja meg a gyanús mintát.

4. sablon – Vizualizáció + megjegyzés:

Szerep: Ön adatvizualizációs szakértő. Feladat: Írjon kódot, amely ábrázolja a motor hőmérsékletének alakulását és a növekedés ütemét. Kényszer: jelölje meg a tengelyeket az egységgel; vizuálisan jelölje meg az anomáliát; ne állítson végleges hibát a grafikon értelmezésekor. Kimenet: Kód + mit kell keresni a grafikonon.

Gyenge felszólítás / Erős felszólítás

Gyenge felszólítás:

Készítsen modellt ezekkel az adatokkal.

Nem világos, melyik cél, melyik rekesz, melyik ellenőrzés; Az AI kódolt, szivárgó, egységvak kódot tud kiadni.

Erőteljes felszólítás:

Szerep: Ön Python ML mentor. Feladat: Írjon egy kezdeti munkafolyamatot a fékbetét kopásának előrejelzésére és az érvényesítés buktatóinak bemutatására. Kontextus: Idősoros telemetria; cél: maradék párna vastagság.Kényszer: Idősor felosztása idő szerint (nincs keverés); az adatszivárgás veszélyének kitett attribútumok megjelölése; dokumentumegységek; minden lépést értelmezni; Írja le, milyen ellenőrzésekre van szükség, mielőtt az eredmény megjelenik a mezőben. Kimenet: Kommentált kód + ellenőrző lista.

Gyakori hibák

  • A kód futtatása anélkül, hogy megértené. Az AI kód ​​is hibás lehet; Olvassa el sorról sorra.
  • Idősorok keverése. shuffle=True kiszivárogtatja a jövőt, és hamis pontszámot ad.
  • Vakon törölje a kiugró értéket. Az aktuális jel (hibakezdés) törölhető.
  • Nem dokumentálja az egységet. Az olyan hibák, mint a km/h vs m/s, Wh vs kWh csendben nőnek.
  • A description()/check lépés kihagyása. A legtöbb hiba az első összesítő statisztikákban jelenik meg.

Összefoglalva

  • A Python (pandas, numpy, matplotlib, scikit-learn) az autóipari adatelemzés de facto szabványa.
  • Megismételhető elemzés: betöltés, ellenőrzés, tisztítás, szolgáltatás, elemzés, érvényesítés és jelentés.
  • Feltétlenül meg kell érteni és ellenőrizni kell az AI által előállított kódot soronként; Attól, hogy működik, még nem biztos, hogy helyes.
  • Múlt/jövő különbség fenntartása az idősorokban; A véletlenszerű keverés adatszivárgást okoz.
  • Az egységkonzisztencia és a kiugró értékek értelmezése néma, de kritikus pontjai az ellenőrzésnek.

Pályázati feladat

Vegyünk egy kis adatkészletet (valós vagy szintetikus telemetria). (1) A hatlépéses keretrendszert követve állítsa elő a betöltési és vezérlőkódot az 1. sablonnal, és ellenőrizze, hogy megértette-e az egyes sorokat. (2) Keressen legalább egy gyanús értéket a description() kimenetben, és vizsgálja meg, miért. (3) Egy előrejelzési feladatban időzítse a képzés/teszt felosztását, és ellenőrizze a szivárgás kockázatát a 2. sablon segítségével. (4) Dokumentálja az egyes használt oszlopok mértékegységét egy szótárban.

ellenőrző lista

  • [ ] Az elemzést egy hatlépéses keretrendszerrel állítottam fel.
  • [ ] Sorról sorra elolvastam és megértettem az AI által előállított kódot.
  • [ ] Gyanús értékeket kerestem a description()/audit segítségével.
  • [ ] Az idősort idő szerint osztottam (nincs keverés).
  • [ ] Megjelöltem az adatszivárgás veszélyének kitett attribútumokat.
  • [ ] Dokumentáltam az egyes oszlopok mértékegységét, és kifejezetten leírtam az átváltásokat.