Единица 9 / 11

Анализа на автомобилски податоци со Python: крај до крај

Добивки:

  • Способност да се воспостави повторлив работен тек на анализа што вчитува и чисти податоци за телеметрија, тестирање и производство со панди
  • Способност да се разбере и да се потврди излезната линија по линија додека се прима код, атрибути и помош за визуелизација од вештачката интелигенција
  • Способност за ревизија на резултатите од анализата за конзистентност на единицата, истекување на податоци и репродуктивност

Во претходните единици користевме вештачка интелигенција како „советник“. Во оваа единица, одиме чекор понатаму и воспоставуваме работен тек кој ги анализира автомобилските податоци со наши раце, користејќи Python. Целта не е да ве направат развивач на софтвер; Тоа е да се направи инженер кој може да го разбере и да го потврди тој код линија по ред додека добива помош за кодот од вештачката интелигенција. Бидејќи кодот произведен од вештачката интелигенција може да биде погрешен, исто како и текстот произведен од вештачката интелигенција; може да ја збуни јачината на звукот, да протече податоци, да центрира погрешна колона. Вклучувањето на кодот без да го разберете е како објавување непотпишан извештај.

Пајтон зошто? Бидејќи тоа е де факто стандард во анализата на податоците: лесно можете да обработувате телеметриски, тестирани и производствени податоци со панди (табеларни податоци), numpy (нумеричка обработка), matplotlib (plot) и scikit-learn (машинско учење).

Шест чекори до репродуктивна анализа

Солидна анализа секогаш ја следи истата рамка:

  1. Вчитување: Читање податоци од датотеката.
  2. Проверете: Димензии, колони, типови на податоци, вредности што недостасуваат.
  3. Чисто: Недостасува/оддалеченост, единица, корекција на временскиот печат.
  4. Извадете карактеристика: изведете значајни променливи.
  5. Анализа/модел: статистика, визуелизација или модел.
  6. Потврдете и пријавете: Обезбедување резултати, проверка на јачината на звукот/истекувањето, снимање.
Совет: Кога барате код од вештачката интелигенција, кажете „коментирајте што правите на секој чекор и напишете ги вашите претпоставки“. Така, можете да го потврдите кодот додека го читате.

Пример чекор-по-чекор: телеметриска анализа

Следниот код вчитува запис CAN/телеметрија и врши основна проверка. (Забелешка: проверете дали ги разбирате шифрите пред да ги извршите; имињата на колоните варираат во зависност од вашите податоци.)

увезете панди како pd# 1) Вчитајте: полу-точка CSV, прва колона timestampdf = pd.read_csv("telemetry.csv", parse_dates=["time"])# 2) Checkprint(df.shape) # колку редови, колку колони печати(df.dtypes на секоја колона (df.dtypes) #бро text)print(df.isna().sum()) # број на вредности што недостасуваат по колона отпечаток(df.describe()) # резиме статистика: мин, макс, просек

Излезот describe() е вашата прва можност да потврдите: ако максималната вредност на брзината на моторот е 45.000 вртежи во минута (типичен патнички мотор ~ 7.000 вртежи во минута), има дефект на единицата или сензорот.

Најчесто користените команди на пандите во чекорот на ревизија и што прават тие:

команда

Што прави

Што потврдува?

дф.облик

Број на редови/колони

Дали е тоа очекуваната големина?

df.dтипови

Типови на колони

Дали колоната со броеви стана текст?

df.isna().sum()

Недостасува број на вредности

Колку простор има?

df.describe()

Мин/макс/просек

Дали е тоа физички разумно?

df.duplicated().sum()

дупликат ред

Дали има двојна регистрација?

# 3) Јасно: означете ги физички невозможните вредности

Внимание: Не го бришете веднаш надворешното; Најпрво разберете зошто тоа е одвоено. Дали е тоа вистински настан (ненадејно загревање) или дефект на сензорот? Слепо бришење може да ја скрие вистинската грешка.

# 4) Екстракт карактеристика: стапка на пораст на температурата (дериват)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["време"].diff().dt.total_seconds()Visualplotplot as 5) pltplt.plot(df["време"], df["motor_sic"])plt.xlabel("Време"); plt.ylabel("Температура на моторот (C)")plt.title("Курс на температурата на моторот")plt.show()

Спречување на истекување на податоци во Python

Најопасната грешка при градење на модел за предвидување е истекување на податоци (единица 5): кога моделот гледа информации што не може да се знаат во моментот на предвидување. Златното правило за да се избегне ова во временските серии: тренирајте со минатото, тестирајте со иднината - без случајно мешање.

од sklearn.model_selection увоз train_test_split# НЕТОЧНО: по случаен избор на временската серија протекува иднината# df[df["time"] > праг] # последните 20% иднина

Внимание: train_test_split стандардно ги меша податоците (shuffle=True). Во временските серии, ова ја меша иднината со образованието и произведува лажна висока оценка. Ако вештачката интелигенција го направила ова во кодот што го произведува, не заборавајте да го поправите.

Конзистентност на единицата: тивок убиец

Најподмолните грешки во автомобилизмот се единични грешки: km/h до m/s, Nm до lb-ft, бар до kPa, °C до K. Водењето речник за тоа која е единицата на секоја колона во анализата и запишувањето на конверзиите јасно спасува животи.

# Документирајте ги единиците експлицитно = {"брзина": "km/h", "motor_sic": "C", "pressure": "bar"}# Експлицитна конверзија доколку е потребно (km/h -> m/s)df["speed_ms"] = df["брзина"] / 3,6

Мини студии на случај

Случај 1 - Утврдена грешка со describe(). Аналитичарот го извршува кодот од вештачката интелигенција и прави проценка на опсегот; Резултатот е апсурдно висок. Кога го гледаме излезот describe(), гледаме дека капацитетот на батеријата е внесен во Wh во некои линии и во kWh во други (1000 пати разлика). Кога единицата е доведена до униформен тип, резултатот се подобрува. Заклучок: Едноставната сумарна статистика спречи лошо предвидување.

Случај 2 - Замка за конфузија. Моделот на абење на сопирачките за практикант беше 98% прецизен на тест сет. Кога ќе се испита кодот, може да се види дека train_test_split(shuffle=True) и временските серии се измешани, што значи дека идните точки протекуваат во обуката. Кога се дели по време, точноста паѓа на 80%, но сега е реална. Заклучок: Само затоа што кодот за вештачка интелигенција функционираше, не беше во ред; Човек го фати истекувањето.

Случај 3 - Разбирање на надворешноста. Во записот за издржливост, кодот за вештачка интелигенција автоматски ги брише поважните вредности на деформација. Инженерот ги разгледува избришаните точки; Токму тоа беа моментите на иницирање на пукнатината за кои беше заинтересиран тестот. Бришењето е отстрането и прекршувањата се земаат во посебен преглед. Резултат: Под „Чистење“ вистинскиот сигнал може да се избрише; прашање на секој чекор.

промптни шаблони

Шаблон 1 - Барај код (со објаснување):

Улога: Вие сте ментор на аналитичар на податоци на Python. Задача: Напишете код што вчитува и проверува телеметриски CSV. Контекст: Колони: време, брзина (km/h), engine_sic (C), Revolution (rpm). Ограничување: коментирајте го секој ред; Објаснете која проверка е направена и зошто; додаде физички невозможна проверка на вредност; тивко не брише ништо.Излез: Коментиран код + кој излез треба да го погледнам и зошто.

Шаблон 2 - Инспекција на истекување:

Улога: Вие сте рецензент на код за машинско учење. Задача: Проверете го следниот код за поделба на обука/тест за протекување податоци. Контекст: Ова е временска серија (телеметрија на возила). Ограничување: Предупреди ако има случајно мешање; Предложете и оправдајте разделување според времето. Излез: Наоди + поправен код + објаснување.

Шаблон 3 - Потврда на единицата:

Улога: Вие сте ревизор за квалитет на податоци. Задача: предложете проверки што бараат неконзистентност на единицата во рамката на податоци. Контекст: Капацитетот може да биде kWh во некои редови, а Wh во други. Излез: Проверете го кодот + како да се најде сомнителната шема.

Шаблон 4 - Визуелизација + коментар:

Улога: Вие сте експерт за визуелизација на податоци. Задача: Напишете код кој го прикажува текот на температурата на моторот и стапката на зголемување. Ограничување: Означете ги оските со единицата; визуелно означете ја аномалијата; не барајте дефинитивна грешка при толкување на графикот. Излез: Код + што да барате во графикот.

Слаб промпт / Силен промпт

Слаба навестување:

Изградете модел со овие податоци.

Не е јасно која цел, кој оддел, која верификација; Вештачката интелигенција може да емитува шифрирана, протечена, слепа шифра.

Моќен потсетник:

Role: You are a Python ML mentor. Задача: Напишете почетен работен тек за да го предвидите абењето на перничињата на сопирачките и да покажете замки за валидација. Контекст: телеметрија на временски серии; цел: преостаната дебелина на подлогата. Ограничување: Поделете ги временските серии по време (без мешање); означете ги атрибутите на ризик од истекување на податоци; единици на документи;интерпретирај го секој чекор; Запишете кои проверки се потребни пред резултатот да излезе на терен. Излез: Коментиран код + список за проверка.

Вообичаени грешки

  • Вклучување на кодот без да го разберете. Кодот за вештачка интелигенција исто така може да биде погрешен; Читајте ред по ред.
  • Мешање временски серии. shuffle=True ја објавува иднината и произведува лажен резултат.
  • Слепо избришете го оддалеченото. Вистинскиот сигнал (почеток на дефект) може да се избрише.
  • Недокументирање на единицата. Грешките како km/h vs m/s, Wh vs kWh растат тивко.
  • Прескокнување на чекорот describe()/check. Повеќето грешки се појавуваат во првата сумарна статистика.

Сумирано

  • Пајтон (панди, нумпи, матплотлиб, скит-учење) е де факто стандард за анализа на податоци од автомобилската индустрија.
  • Анализа што може да се повтори: вчитајте, прегледајте, исчистете, обележете, анализирајте, потврдете и пријавете.
  • Императив е да се разбере и да се потврди кодот што вештачката интелигенција го произведува линија по линија; Само затоа што работи не значи дека е правилно.
  • Одржување на минато/идно разликување во временски серии; Случајното мешање создава истекување на податоци.
  • Конзистентноста на единицата и надворешното толкување се тивки, но критични точки на верификација.

Задача за апликација

Земете мал сет на податоци (вистинска или синтетичка телеметрија). (1) Следејќи ја рамката од шест чекори, генерирајте го кодот за вчитување и контрола со Шаблон 1 и потврдете дека ја разбирате секоја линија. (2) Најдете барем една сомнителна вредност во излезот describe() и истражете зошто. (3) Во задачата за предвидување, време на поделба на обуката/тестот и проверете го ризикот од истекување со Шаблон 2. (4) Документирајте ја единицата на секоја колона што ја користите во речник.

листа за проверка

  • [ ] Ја поставив анализата со рамка од шест чекори.
  • [ ] Го прочитав и разбрав кодот произведен од ВИ линија по ред.
  • [ ] Барав сомнителни вредности со describe()/audit.
  • [ ] Ја делам временската серија по време (без мешање).
  • [ ] Ги означив атрибутите што се изложени на ризик од истекување на податоци.
  • [ ] Ја документирав единицата на секоја колона и експлицитно ги напишав конверзиите.