단위 9 / 11

Python을 사용한 자동차 데이터 분석: 엔드투엔드

이득:

  • Pandas를 사용하여 원격 측정, 테스트 및 생산 데이터를 로드하고 정리하는 반복 가능한 분석 워크플로우를 구축하는 기능
  • 인공지능으로부터 코드, 속성, 시각화 지원을 받으면서 출력을 한 줄씩 이해하고 검증하는 능력
  • 단위 일관성, 데이터 유출 및 재현성에 대한 분석 결과를 감사하는 기능

이전 단원에서는 인공지능을 '고문'처럼 사용했습니다. 이번 단원에서는 한 단계 더 나아가 Python을 사용하여 자동차 데이터를 직접 분석하는 워크플로를 구축합니다. 목표는 당신을 소프트웨어 개발자로 만드는 것이 아닙니다. AI의 코드 지원을 받으면서 그 코드를 한줄 한줄 이해하고 검증할 수 있는 엔지니어를 만드는 것입니다. AI가 생성한 코드는 AI가 생성한 텍스트와 마찬가지로 결함이 있을 수 있기 때문입니다. 볼륨 혼동, 데이터 누출, 잘못된 열 중앙 정렬 등의 문제가 발생할 수 있습니다. 코드를 이해하지 않고 실행하는 것은 서명되지 않은 보고서를 게시하는 것과 같습니다.

파이썬은 왜? 데이터 분석의 사실상 표준이기 때문에 pandas(표 형식 데이터), numpy(수치 처리), matplotlib(플롯) 및 scikit-learn(기계 학습) 라이브러리를 사용하여 원격 측정, 테스트 및 프로덕션 데이터를 쉽게 처리할 수 있습니다.

재현 가능한 분석을 위한 6단계

견고한 분석은 항상 동일한 프레임워크를 따릅니다.

  1. 로드: 파일에서 데이터를 읽습니다.
  2. 검사: 차원, 열, 데이터 유형, 누락된 값.
  3. 정리: 누락/이상값, 단위, 타임스탬프 수정.
  4. 추출 기능: 의미 있는 변수를 도출합니다.
  5. 분석/모델: 통계, 시각화 또는 모델.
  6. 검증 및 보고: 결과 제공, 용량/누출 확인, 녹음.
팁: AI에게 코드를 요청할 때 "각 단계에서 수행 중인 작업을 주석 처리하고 가정을 작성하세요"라고 말하세요. 따라서 코드를 읽으면서 코드를 확인할 수 있습니다.

단계별 예: 원격 측정 분석

다음 코드는 CAN/원격 측정 레코드를 로드하고 기본 확인을 수행합니다. (참고: 코드를 실행하기 전에 코드를 이해했는지 확인하세요. 열 이름은 데이터에 따라 다릅니다.)

import pandas as pd# 1) 로드: 반점 CSV, 첫 번째 열 timestampdf = pd.read_csv("telemetry.csv",parse_dates=["time"])# 2) Checkprint(df.shape) # 행 수, 열 수print(df.dtypes) # 각 열의 유형(숫자 또는 텍스트)print(df.isna().sum()) # 누락된 값 수 columnprint(df.describe()) # 요약 통계: 최소, 최대, 평균

explain() 출력은 엔진 속도 최대 값이 45,000rpm(일반적인 승용차 엔진 ~7,000rpm)인 경우 장치 또는 센서 오류가 있는지 확인할 수 있는 첫 번째 기회입니다.

감사 단계에서 가장 자주 사용되는 pandas 명령과 그 기능은 다음과 같습니다.

명령

무엇을

그것은 무엇을 확인합니까?

df.모양

행/열 수

예상되는 크기인가요?

df.dtypes

열 유형

숫자 열이 텍스트로 되었나요?

df.isna().sum()

누락된 값 수

공간이 얼마나 되나요?

df.설명()

최소/최대/평균

물리적으로 합리적인가?

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) 간단한 시각화import matplotlib.pyplot as pltplt.plot(df["시간"], df["motor_sic"])plt.xlabel("시간"); plt.ylabel("엔진 온도(C)")plt.title("엔진 온도 과정")plt.show()

Python에서 데이터 유출 방지

예측 모델을 구축할 때 가장 위험한 실수는 데이터 유출입니다(단원 5): 모델이 예측 당시 알 수 없는 정보를 보는 경우입니다. 시계열에서 이를 방지하기 위한 황금률은 과거로 훈련하고 미래로 테스트하는 것입니다. 무작위로 섞지 않습니다.

from sklearn.model_selection import train_test_split# FALSE: 시계열을 무작위로 분할하면 미래가 누출됩니다# df[df["time"] > 임계값] # 마지막 20% 미래

주의: train_test_split은 기본적으로 데이터를 섞습니다(shuffle=True). 시계열에서 이는 미래와 교육을 혼동하여 잘못된 높은 점수를 생성합니다. AI가 생성한 코드에서 이 작업을 수행한 경우 반드시 수정하세요.

단위 일관성: 침묵의 살인자

자동차에서 가장 교활한 오류는 단위 오류입니다: km/h에서 m/s로, Nm에서 lb-ft로, bar에서 kPa로, °C에서 K로. 분석에서 각 열의 단위가 무엇인지 사전에 보관하고 변환을 명확하게 기록하면 생명을 구할 수 있습니다.

# 명시적으로 단위를 문서화합니다 = {"speed": "km/h", "motor_sic": "C", "press": "bar"}# 필요한 경우 명시적인 변환 (km/h -> m/s)df["speed_ms"] = df["speed"] / 3.6

미니 사례 연구

사례 1 - explain()에서 오류가 발견되었습니다. 분석가는 AI의 코드를 실행하고 범위 추정을 합니다. 결과는 터무니없이 높습니다. explain() 출력을 보면 배터리 용량이 일부 라인에서는 Wh로 입력되고 다른 라인에서는 kWh로 입력되는 것을 볼 수 있습니다(1000배 차이). 장치를 균일한 유형으로 만들면 결과가 향상됩니다. 결론: 간단한 요약 통계로 잘못된 예측을 예방했습니다.

사례 2 - 혼란의 함정. 인턴의 브레이크 마모 모델은 테스트 세트에서 98% 정확했습니다. 코드를 검사하면 train_test_split(shuffle=True)와 시계열이 혼합되어 있음을 알 수 있습니다. 즉, 미래 포인트가 훈련에 누출된다는 의미입니다. 시간으로 나누면 정확도가 80%로 떨어지지만 이제는 현실화됐다. 결론: AI 코드가 작동했다고 해서 옳지 않았다. 인간이 누출을 포착했습니다.

사례 3 - 이상치를 이해합니다. 내구성 기록에서 AI 코드는 이상치 변형률 값을 자동으로 삭제합니다. 엔지니어는 삭제된 점을 살펴봅니다. 이는 정확히 테스트에서 관심을 보인 크랙이 시작되는 순간이었습니다. 삭제된 내용은 제거되고 위반 사항은 별도의 검토를 거칩니다. 결과: "청소"에서 실제 신호를 삭제할 수 있습니다. 모든 단계에 질문을 던지세요.

프롬프트 템플릿

템플릿 1 - 요청 코드(설명 포함):

역할: 당신은 Python 데이터 분석가 멘토입니다. 작업: 원격 측정을 로드하고 확인하는 코드를 작성합니다. CSV.컨텍스트: 열: 시간, 속도(km/h), 엔진_sic(C), 회전(rpm). 제약 조건: 각 행을 주석 처리합니다. 어떤 확인이 이루어졌고 그 이유를 설명하십시오. 물리적으로 불가능한 값 확인 추가; 아무것도 자동으로 삭제하지 않습니다. 출력: 주석 처리된 코드 + 살펴보아야 할 출력과 그 이유.

템플릿 2 - 누출 검사:

역할: 당신은 기계 학습 코드 검토자입니다. 작업: 데이터 유출에 대한 다음 학습/테스트 분할 코드를 확인하세요. 컨텍스트: 이는 시계열(차량 원격 측정)입니다. 제약조건: 무작위 셔플링이 있으면 경고합니다. 시간에 따른 분할을 제안하고 정당화합니다. 출력: 결과 + 수정된 코드 + 설명.

템플릿 3 - 단위 검증:

역할: 당신은 데이터 품질 감사자입니다. 작업: DataFrame에서 단위 불일치를 찾는 검사를 제안합니다. 컨텍스트: 용량은 일부 행에서는 kWh일 수 있고 다른 행에서는 Wh일 수 있습니다. 출력: 코드 확인 + 의심스러운 패턴을 찾는 방법.

템플릿 4 - 시각화 + 설명:

역할: 당신은 데이터 시각화 전문가입니다. 과제: 엔진 온도 변화와 증가율을 나타내는 코드를 작성하세요. 제약 조건: 단위를 사용하여 축에 레이블을 지정합니다. 이상 징후를 시각적으로 표시합니다. 그래프를 해석할 때 확실한 잘못을 주장하지 마십시오. 출력: 코드 + 그래프에서 찾을 내용.

약한 프롬프트 / 강한 프롬프트

약한 프롬프트:

이 데이터를 사용하여 모델을 구축하세요.

어떤 대상, 어떤 구획, 어떤 검증이 명확하지 않습니다. AI는 뒤섞이고 누출되는 단위 블라인드 코드를 출력할 수 있습니다.

강력한 프롬프트:

역할: 귀하는 Python ML 멘토입니다. 작업: 브레이크 패드 마모를 예측하고 검증 함정을 시연하기 위한 초기 작업 흐름을 작성합니다. 컨텍스트: 시계열 원격 측정; 목표: 남은 패드 두께. 제약: 시계열을 시간별로 분할합니다(셔플링 없음). 데이터 유출 위험이 있는 속성에 플래그를 지정합니다. 문서 단위;각 단계를 해석합니다. 결과가 현장에 나가기 전에 어떤 점검이 필요한지 적어보세요. 출력: 주석 처리된 코드 + 확인 체크리스트.

일반적인 실수

  • 코드를 이해하지 못한 채 코드를 실행합니다. AI 코드에도 결함이 있을 수 있습니다. 한 줄씩 읽으십시오.
  • 시계열을 혼합합니다. shuffle=True는 미래를 유출하고 가짜 점수를 생성합니다.
  • 이상값을 맹목적으로 삭제합니다. 실제 신호(오류 발생)를 지울 수 있습니다.
  • 장치를 문서화하지 않습니다. km/h 대 m/s, Wh 대 kWh와 같은 오류는 소리 없이 증가합니다.
  • explain()/check 단계를 건너뜁니다. 대부분의 오류는 첫 번째 요약 통계에 나타납니다.

요약하면

  • Python(pandas, numpy, matplotlib, scikit-learn)은 자동차 데이터 분석의 사실상 표준입니다.
  • 반복 가능한 분석: 로드, 검사, 정리, 특성화, 분석, 검증 및 보고.
  • AI가 생성하는 코드를 한 줄씩 이해하고 검증하는 것이 필수적입니다. 작동한다고 해서 그것이 옳다는 것을 의미하는 것은 아닙니다.
  • 시계열에서 과거/미래 구별을 유지합니다. 무작위 셔플링으로 인해 데이터 유출이 발생합니다.
  • 단위 일관성과 이상치 해석은 조용하지만 중요한 검증 포인트입니다.

응용과제

작은 데이터 세트(실제 또는 합성 원격 측정)를 사용합니다. (1) 6단계 프레임워크에 따라 템플릿 1을 사용하여 로딩 및 제어 코드를 생성하고 각 줄을 이해했는지 확인합니다. (2) explain() 출력에서 ​​의심스러운 값을 하나 이상 찾아 그 이유를 조사합니다. (3) 예측 작업에서 훈련/테스트 분할 시간을 정하고 템플릿 2를 사용하여 누출 위험을 확인합니다. (4) 사용하는 각 열의 단위를 사전에 문서화합니다.

체크리스트

  • [ ] 6단계 프레임워크로 분석을 설정했습니다.
  • [ ] AI가 생성한 코드를 한 줄씩 읽고 이해했습니다.
  • [ ] explain()/audit로 의심스러운 값을 찾아봤습니다.
  • [ ] 시계열을 시간별로 분할했습니다(셔플링 없음).
  • [ ] 데이터 유출 위험이 있는 속성을 표시해 두었습니다.
  • [ ] 각 열의 단위를 문서화하고 변환을 명시적으로 작성했습니다.