Pelnas:
- Galimybė sukurti pakartojamą analizės darbo eigą, kuri įkelia ir išvalo telemetrijos, bandymų ir gamybos duomenis naudojant pandas
- Gebėjimas suprasti ir patikrinti išvesties eilutę po eilutės, gaunant kodą, atributus ir vizualizavimo pagalbą iš dirbtinio intelekto
- Gebėjimas tikrinti analizės rezultatus, kad būtų užtikrintas vieneto nuoseklumas, duomenų nutekėjimas ir atkuriamumas
Ankstesniuose padaliniuose dirbtinį intelektą naudojome kaip „patarėją“. Šiame skyriuje žengiame dar vieną žingsnį toliau ir sukuriame darbo eigą, kuri savo rankomis analizuoja automobilių duomenis naudodami Python. Tikslas nėra padaryti jus programinės įrangos kūrėju; Tai yra inžinierius, kuris gali suprasti ir patikrinti kodą eilutę po eilutės, gaudamas kodo pagalbą iš AI. Kadangi AI sukurtas kodas gali būti klaidingas, kaip ir AI sukurtas tekstas; gali supainioti tūrį, nutekėti duomenys, įcentruoti neteisingą stulpelį. Kodo paleidimas jo nesuprantant prilygsta nepasirašytos ataskaitos paskelbimui.
Python kodėl? Kadangi tai yra de facto duomenų analizės standartas: galite lengvai apdoroti telemetrijos, testavimo ir gamybos duomenis naudodami pandų (lentelių duomenų), numpy (skaitinis apdorojimas), matplotlib (plot) ir scikit-learn (mašininio mokymosi) bibliotekas.
Šeši žingsniai iki atkuriamos analizės
Tvirta analizė visada vadovaujasi ta pačia sistema:
- Įkelti: nuskaitykite duomenis iš failo.
- Patikrinkite: aspektas, stulpeliai, duomenų tipai, trūkstamos reikšmės.
- Išvalyti: trūksta / nepatenka, vienetas, laiko žymos taisymas.
- Išskleiskite funkciją: išveskite reikšmingus kintamuosius.
- Analizė / modelis: statistika, vizualizacija arba modelis.
- Patikrinkite ir praneškite: Rezultatų pateikimas, tūrio / nuotėkio patikrinimas, įrašymas.
Patarimas: Prašydami dirbtinio intelekto kodo, pasakykite „komentuokite, ką darote kiekviename žingsnyje, ir parašykite savo prielaidas“. Taigi skaitydami kodą galite patikrinti.
Žingsnis po žingsnio pavyzdys: telemetrinė analizė
Šis kodas įkelia CAN / telemetrijos įrašą ir atlieka pagrindinį patikrinimą. (Pastaba: prieš paleisdami kodus įsitikinkite, kad suprantate juos; stulpelių pavadinimai skiriasi priklausomai nuo jūsų duomenų.)
importuoti pandas kaip pd# 1) Įkelti: pusiau taškuotas CSV, pirmas stulpelis timetampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # kiek eilučių, kiek stulpeliųprint(df.dtypes) # kiekvieno stulpelio tipas (df.sum(isna text)) stulpelio atspaudo reikšmės(df.describe()) # suvestinė statistika: min, max, vidurkis
Aprašymas() išvestis yra jūsų pirmoji galimybė patikrinti: jei variklio sūkių skaičiaus didžiausia vertė yra 45 000 aps./min (įprastas keleivinis variklis ~ 7 000 aps./min.), yra įrenginio arba jutiklio gedimas.
Dažniausiai naudojamos pandų komandos audito etape ir ką jos daro:
komandą
Kas daro
Ką tai patvirtina?
df.shape
Number of rows/columns
Is it the expected size?
df.dtypes
Column types
Ar skaičių stulpelis tapo tekstu?
df.isna().sum()
Missing value count
How much space is there?
df.describe()
Min/max/average
Ar tai fiziškai pagrįsta?
df.duplicated().sum()
duplicate row
Ar yra dviguba registracija?
# 3) Išvalyti: pažymėkite fiziškai neįmanomas reikšmes
Atsargiai: Neištrinkite išskirtinio iš karto; Pirmiausia supraskite, kodėl tai yra nuokrypis. Ar tai tikras įvykis (staigus įkaitimas) ar jutiklio gedimas? Aklas ištrynimas gali paslėpti tikrąją gedimą.
# 4) Ištraukimo funkcija: temperatūros kilimo greitis (išvestinė) df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# libpy. mattplot visualization# 5. pltplt.plot(df["laikas"], df["motor_sic"])plt.xlabel("Laikas"); plt.ylabel("Variklio temperatūra (C)")plt.title("Variklio temperatūros kursas")plt.show()
Duomenų nutekėjimo „Python“ prevencija
Pavojingiausia klaida kuriant prognozavimo modelį yra duomenų nutekėjimas (5 vienetas): kai modelis mato informaciją, kurios negalima žinoti prognozavimo metu. Auksinė taisyklė, kaip to išvengti laiko eilutėse: treniruokitės su praeitimi, išbandykite su ateitimi – jokio atsitiktinio maišymo.
iš sklearn.model_selection import train_test_split# FALSE: atsitiktinai suskaidžius laiko eilutes nuteka ateitis# df[df["laikas"] > slenkstis] # paskutiniai 20 % ateitis
Atsargiai: train_test_split maišo duomenis pagal numatytuosius nustatymus (shuffle=True). Laiko eilutėje tai painioja ateitį su švietimu ir sukuria klaidingą aukštą rezultatą. Jei AI tai padarė savo sukurtame kode, būtinai pataisykite.
Vieneto konsistencija: tylus žudikas
Klastingiausios klaidos automobilyje yra vienetų paklaidos: km/h iki m/s, Nm iki lb-ft, baras iki kPa, °C iki K. Žodyno vedimas, koks kiekvieno stulpelio vienetas yra analizėje ir perskaičiavimų užrašymas aiškiai gelbsti gyvybes.
# Dokumentuokite vienetus aiškiai = {"greitis": "km/h", "motor_sic": "C", "pressure": "bar"}# Aiškus konvertavimas, jei reikia (km/h -> m/s)df["speed_ms"] = df["greitis"] / 3.6
Mini atvejų analizė
1 atvejis – klaida užfiksuota naudojant description(). Analitikas paleidžia kodą iš AI ir įvertina diapazoną; Rezultatas absurdiškai aukštas. Kai žiūrime į description() išvestį, matome, kad baterijos talpa vienose eilutėse įvedama Wh, kitose – kWh (1000 kartų skirtumas). Kai įrenginys suvienodinamas, rezultatas pagerėja. Išvada: paprasta suvestinė statistika užkirto kelią blogai prognozei.
Case 2 - Confusion trap. Stažuotojo stabdžių nusidėvėjimo modelis buvo 98% tikslus bandymo rinkinyje. Išnagrinėjus kodą, matyti, kad train_test_split(shuffle=True) ir laiko eilutės yra sumaišytos, o tai reiškia, kad būsimi taškai patenka į mokymą. Padalijus iš laiko, tikslumas sumažėja iki 80%, tačiau dabar jis yra realus. Išvada: vien todėl, kad AI kodas veikė, jis buvo neteisingas; Human caught the leak.
3 atvejis. Išskirtinio supratimas. Patvarumo įraše AI kodas automatiškai ištrina išskirtines deformacijos vertes. Inžinierius žiūri į ištrintus taškus; Būtent tokiais plyšio pradžios momentais buvo įdomu atlikti bandymą. Ištrynimas pašalinamas, o pažeidimai peržiūrimi atskirai. Rezultatas: Skiltyje „Valymas“ galima ištrinti tikrąjį signalą; question every step.
raginimo šablonai
1 šablonas – užklausos kodas (su paaiškinimu):
Vaidmuo: esate Python duomenų analitiko mentorius.Užduotis: Parašykite kodą, kuris įkelia ir tikrina telemetrijos CSV.Kontekstas: Stulpeliai: laikas, greitis (km/h), engine_sic (C), apsisukimai (rpm). Apribojimas: komentuokite kiekvieną eilutę; Paaiškinkite, koks patikrinimas buvo atliktas ir kodėl; pridėti fiziškai neįmanomą vertės patikrinimą; tyliai nieko neištrinant.Išvestis: Komentuojamas kodas + į kurią išvestį turėčiau žiūrėti ir kodėl.
2 šablonas – nuotėkio patikrinimas:
Vaidmuo: esate mašininio mokymosi kodo apžvalgininkas. Užduotis: patikrinkite šį mokymo / testo padalijimo kodą, ar nėra duomenų nutekėjimo. Kontekstas: tai laiko eilutė (transporto priemonės telemetrija). Apribojimas: Įspėti, jei vyksta atsitiktinis maišymas; Pasiūlykite ir pateisinkite skirstymą pagal laiką. Rezultatas: išvados + pataisytas kodas + paaiškinimas.
3 šablonas – vieneto patvirtinimas:
Vaidmuo: esate duomenų kokybės auditorius.Užduotis: pasiūlykite patikras, kurios ieškotų vienetų neatitikimų duomenų rėmelyje.Kontekstas: Vienose eilutėse talpa gali būti kWh, o kitose - Wh.Išvestis: patikrinkite kodą + kaip rasti įtartiną šabloną.
4 šablonas – vizualizacija + komentaras:
Vaidmuo: esate duomenų vizualizacijos ekspertas. Užduotis: Parašykite kodą, kuris nubrėžia variklio temperatūros eigą ir didėjimo greitį. Apribojimas: pažymėkite ašis vienetu; vizualiai pažymėkite anomaliją; nepretenduoti į galutinę kaltę interpretuodami grafiką. Išvestis: kodas + ko ieškoti grafike.
Silpnas raginimas / Stiprus raginimas
Silpnas raginimas:
Sukurkite modelį naudodami šiuos duomenis.
Neaišku, kuris taikinys, kuris skyrius, kuris patikrinimas; AI gali išvesti užšifruotą, nesandarią, vienetų aklą kodą.
Galingas raginimas:
Vaidmuo: esate Python ML mentorius. Užduotis: parašykite pradinę darbo eigą, skirtą numatyti stabdžių trinkelių susidėvėjimą ir parodyti patvirtinimo spąstus. Kontekstas: laiko eilučių telemetrija; tikslas: likęs trinkelės storis. Apribojimas: laiko eilučių padalijimas pagal laiką (be maišymo); pažymėti atributus, kuriems kyla duomenų nutekėjimo pavojus; dokumentų vienetai; interpretuoti kiekvieną žingsnį; Užsirašykite, kokių patikrinimų reikia atlikti, kol rezultatas išeis į lauką. Išvestis: Komentuojamas kodas + patikrinimo kontrolinis sąrašas.
Dažnos klaidos
- Kodo paleidimas jo nesuprasdamas. AI kodas taip pat gali būti klaidingas; Read line by line.
- Mixing time series. shuffle=True nutekina ateitį ir sukuria netikrą rezultatą.
- Aklai ištrinkite nuokrypį. Tikrasis signalas (gedimo pradžia) gali būti panaikintas.
- Nedokumentuoja įrenginio. Tokios klaidos kaip km/h vs m/s, Wh vs kWh auga tyliai.
- Praleidžiant aprašo()/patikrinimo veiksmą. Dauguma klaidų atsiranda pirmoje suvestinėje statistikoje.
Apibendrinant
- Python (pandas, numpy, matplotlib, scikit-learn) yra de facto automobilių duomenų analizės standartas.
- Pakartojama analizė: įkelkite, patikrinkite, išvalykite, išrinkite, analizuokite, patvirtinkite ir praneškite.
- Būtina suprasti ir patikrinti kodą, kurį AI sukuria eilutė po eilutės; Vien todėl, kad tai veikia, dar nereiškia, kad tai teisinga.
- Laiko eilutėse išlaikyti praeities ir ateities skirtumą; Atsitiktinis maišymas sukuria duomenų nutekėjimą.
- Vieneto nuoseklumas ir pašalinių aplinkybių aiškinimas yra tylūs, bet svarbūs patikrinimo taškai.
Taikymo užduotis
Paimkite nedidelį duomenų rinkinį (tikroji arba sintetinė telemetrija). (1) Vykdydami šešių žingsnių sistemą, sugeneruokite įkėlimo ir valdymo kodą naudodami 1 šabloną ir patvirtinkite, kad suprantate kiekvieną eilutę. (2) Raskite bent vieną įtartiną reikšmę aprašo() išvestyje ir ištirkite, kodėl. (3) Numatymo užduotyje nustatykite mokymo / testo padalijimą ir patikrinkite nutekėjimo riziką naudodami 2 šabloną. (4) Įrašykite kiekvieno naudojamo stulpelio vienetą žodyne.
kontrolinis sąrašas
- [ ] Analizę parengiau šešių žingsnių sistema.
- [ ] Perskaičiau ir supratau AI sukurtą kodą eilutė po eilutės.
- [ ] Ieškojau įtartinų verčių su description()/audit.
- [ ] Padalinau laiko eilutes pagal laiką (be maišymo).
- [ ] Pažymėjau atributus, kuriems gresia duomenų nutekėjimas.
- [ ] Aš dokumentavau kiekvieno stulpelio vienetą ir aiškiai parašiau konversijas.