единица 9 / 11

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

Печалби:

  • Възможност за установяване на повтарящ се работен процес за анализ, който зарежда и почиства телеметрични, тестови и производствени данни с pandas
  • Възможност за разбиране и проверка на изхода ред по ред, докато получавате помощ за код, атрибути и визуализация от изкуствен интелект
  • Възможност за одит на резултатите от анализа за последователност на единиците, изтичане на данни и възпроизводимост

В предишните части използвахме изкуствения интелект като „съветник“. В този модул отиваме една крачка напред и създаваме работен процес, който анализира автомобилни данни със собствените ни ръце, използвайки Python. Целта не е да ви направят софтуерен разработчик; Това е да се направи инженер, който може да разбере и провери този код ред по ред, докато получава помощ за кода от AI. Тъй като кодът, произведен от AI, може да бъде дефектен, точно както текстът, произведен от AI; може да обърка обем, изтичане на данни, центриране на грешна колона. Изпълнението на кода, без да го разбирате, е като публикуване на неподписан отчет.

Python защо? Тъй като това е фактическият стандарт в анализа на данни: можете лесно да обработвате телеметрични, тестови и производствени данни с библиотеки pandas (таблични данни), numpy (числова обработка), matplotlib (графика) и scikit-learn (машинно обучение).

Шест стъпки към възпроизводим анализ

Солидният анализ винаги следва една и съща рамка:

  1. Зареждане: Прочетете данни от файла.
  2. Проверете: измерение, колони, типове данни, липсващи стойности.
  3. Чисто: Липсва/отклонение, единица, корекция на клеймо за време.
  4. Функция за извличане: Извличане на значими променливи.
  5. Анализ/модел: Статистика, визуализация или модел.
  6. Проверете и докладвайте: Осигуряване на резултат, проверка на обем/теч, запис.
Съвет: Когато питате AI за код, кажете „коментирайте какво правите на всяка стъпка и напишете вашите предположения“. Така че можете да проверите кода, докато го четете.

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

Следният код зарежда CAN/телеметричен запис и извършва основна проверка. (Забележка: уверете се, че разбирате кодовете, преди да ги стартирате; имената на колоните варират в зависимост от вашите данни.)

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

Изходът describe() е първата ви възможност да проверите: ако максималната стойност на скоростта на двигателя е 45 000 rpm (типичен пътнически двигател ~7 000 rpm), има повреда в модула или сензора.

Най-често използваните команди на pandas в стъпката за одит и какво правят:

команда

Какво прави

Какво потвърждава?

df.форма

Брой редове/колони

Очакваният размер ли е?

df.dtypes

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

Цифровата колона превърнала ли се е в текст?

df.isna().sum()

Липсващ брой стойности

Колко място има?

df.describe()

Мин./макс./средно

Физически разумно ли е?

df.duplicated().sum()

дублиран ред

Има ли двойна регистрация?

# 3) Ясно: маркирайте физически невъзможни стойности

Внимание: Не изтривайте отклонението незабавно; Първо разберете защо това е отклонение. Реално събитие ли е (внезапно нагряване) или повреда на сензора? Сляпото изтриване може да скрие истинската грешка.

# 4) Функция за извличане: скорост на повишаване на температурата (производно)df = df.sort_values("time")df["sic_increase_speed"] = df["motor_sic"].diff() / df["time"].diff().dt.total_seconds()# 5) Проста визуализацияимпорт matplotlib.pyplot като pltplt.plot(df["време"], df["motor_sic"])plt.xlabel("Време"); plt.ylabel("Температура на двигателя (C)")plt.title("Промяна на температурата на двигателя")plt.show()

Предотвратяване на изтичане на данни в Python

Най-опасната грешка при изграждането на модел за прогнозиране е изтичането на данни (единица 5): когато моделът вижда информация, която не може да бъде известна по време на прогнозирането. Златното правило за избягване на това във времеви серии: тренирайте с миналото, тествайте с бъдещето — без произволно разместване.

от sklearn.model_selection import train_test_split# FALSE: произволното разделяне на времевия ред изтича бъдещето# df[df["време"] > праг] # последните 20% бъдеще

Внимание: train_test_split разбърква данните по подразбиране (shuffle=True). Във времевия ред това обърква бъдещето с образованието и създава фалшив висок резултат. Ако AI е направил това в кода, който произвежда, не забравяйте да го поправите.

Консистенция на единица: тих убиец

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

# Документирайте единиците изрично = {"speed": "km/h", "motor_sic": "C", "pressure": "bar"}# Изрично преобразуване, ако е необходимо (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6

Мини казуси

Случай 1 - Грешка, уловена с describe(). Анализатор изпълнява кода от AI ​​и прави оценка на диапазона; Резултатът е абсурдно висок. Когато погледнем изхода describe(), виждаме, че капацитетът на батерията е въведен в Wh в някои редове и в kWh в други (1000 пъти разлика). Когато устройството се доведе до еднороден тип, резултатът се подобрява. Заключение: Една проста обобщена статистика предотврати лоша прогноза.

Случай 2 – Капан за объркване. Моделът на износването на спирачките на стажант беше 98% точен при тестовия набор. Когато кодът се изследва, може да се види, че train_test_split(shuffle=True) и времевите серии са смесени, което означава, че бъдещи точки изтичат в обучението. Когато се раздели на време, точността пада до 80%, но вече е реалистична. Заключение: Само защото AI кодът работеше, той не беше правилен; Човекът е уловил теча.

Случай 3 – Разбиране на отклонението. В записа за издръжливост кодът на изкуствен интелект автоматично изтрива извънредните стойности на деформация. Инженерът разглежда изтритите точки; Това бяха точно моментите на стартиране на крак, от които тестът се интересуваше. Изтриването се премахва и нарушенията се разглеждат отделно. Резултат: Под "Почистване" реалният сигнал може да бъде изтрит; поставя под съмнение всяка стъпка.

подканващи шаблони

Шаблон 1 - Код на заявка (с обяснение):

Роля: Вие сте наставник за анализатор на данни на Python. Задача: Напишете код, който зарежда и проверява CSV с телеметрия. Контекст: Колони: време, скорост (km/h), engine_sic (C), обороти (rpm). Ограничение: Коментирайте всеки ред; Обяснете коя проверка е направена и защо; добавете физически невъзможна проверка на стойността; безшумно изтриване на нищо. Изход: Коментиран код + кой изход трябва да разгледам и защо.

Шаблон 2 - Проверка на течове:

Роля: Вие сте рецензент на код за машинно обучение. Задача: Проверете следния разделен код за обучение/тест за изтичане на данни. Контекст: Това е времева серия (телеметрия на превозното средство). Ограничение: Предупреждава, ако има произволно разбъркване; Предложете и обосновете разделяне по време. Резултат: Констатации + коригиран код + обяснение.

Шаблон 3 - Валидиране на единица:

Роля: Вие сте одитор на качеството на данните. Задача: Предложете проверки, които търсят несъответствие на единица в DataFrame. Контекст: Капацитетът може да бъде kWh в някои редове и Wh в други. Резултат: Проверете кода + как да намерите подозрителния модел.

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

Роля: Вие сте експерт по визуализация на данни. Задача: Напишете код, който чертае хода на температурата на двигателя и скоростта на нарастване. Ограничение: Маркирайте осите с единицата; визуално маркирайте аномалията; не претендирайте за окончателна грешка, когато интерпретирате графиката. Резултат: Код + какво да търсите в графиката.

Слаба подкана / Силна подкана

Слаба подкана:

Изградете модел с тези данни.

Не е ясно коя цел, кое отделение, коя проверка; AI може да изведе разбъркан, спукан, сляп код.

Мощна подкана:

Роля: Вие сте ментор на Python ML. Задача: Напишете първоначален работен процес за прогнозиране на износването на спирачните накладки и демонстрирайте клопките при валидирането. Контекст: Телеметрия от времеви редове; цел: оставаща дебелина на подложката. Ограничение: Разделяне на времеви серии по време (без разбъркване); флагови атрибути при риск от изтичане на данни; документни единици; тълкуване на всяка стъпка; Запишете какви проверки са необходими, преди резултатът да излезе на полето. Резултат: Коментиран код + списък за проверка.

Често срещани грешки

  • Изпълнение на кода, без да го разбирате. AI кодът също може да е дефектен; Прочетете ред по ред.
  • Смесване на времеви редове. shuffle=True пропуска бъдещето и създава фалшив резултат.
  • Изтрийте сляпо отклонението. Действителният сигнал (начало на повреда) може да бъде изчистен.
  • Не документира единицата. Грешки като km/h спрямо m/s, Wh срещу kWh растат тихо.
  • Пропускане на стъпката describe()/check. Повечето грешки се появяват в първата обобщена статистика.

В обобщение

  • Python (pandas, numpy, matplotlib, scikit-learn) е де факто стандартът за анализ на автомобилни данни.
  • Повтарящ се анализ: зареждане, проверка, почистване, представяне, анализиране, валидиране и докладване.
  • Наложително е да разберете и проверите кода, който AI произвежда ред по ред; Това, че работи, не означава, че е правилно.
  • Поддържане на разграничение минало/бъдеще във времеви редове; Случайното разбъркване създава изтичане на данни.
  • Съгласуваността на единиците и тълкуването на отклонения са тихи, но критични точки за проверка.

Задача за приложение

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

контролен списък

  • [ ] Настроих анализа с рамка от шест стъпки.
  • [ ] Прочетох и разбрах кода, създаден от AI ред по ред.
  • [ ] Потърсих подозрителни стойности с describe()/audit.
  • [ ] Разделих времевата поредица по време (без разбъркване).
  • [ ] Маркирах атрибутите, които са изложени на риск от изтичане на данни.
  • [ ] Документирах единицата на всяка колона и изрично написах преобразуванията.