✅ 오늘 한 것
심화 프로젝트, 시계열 데이터 처리하기
✏️ 오늘 배운 점
# 정규성 검정
from scipy.stats import shapiro
stat, p = shapiro(data)
if p > 0.05:
print("정규분포 가정 만족 (모수검정 가능)")
else:
print("정규분포 아님 (비모수검정 고려)")
# 등분산성 검정
from scipy.stats import levene
stat, p = levene(group1, group2)
if p > 0.05:
print("등분산성 가정 만족")
else:
print("등분산성 불만족 (Welch t-test, Kruskal-Wallis 고려)")
1️⃣ 날짜 요소 분리 (Date Features)
- 날짜 데이터를 년, 월, 일, 요일 등으로 분리하여 모델이 주기적 패턴을 인식할 수 있게 함.
-
df['date'] = pd.to_datetime(df['date']) df['year'] = df['date'].dt.year df['month'] = df['date'].dt.month df['day'] = df['date'].dt.day
- ✅ 활용 효과
- 월별·분기별·계절별 패턴 반영
- 주말/평일 차이 반영
- 주기성(Seasonality) 분석 가능
🔹 2️⃣ Lag Feature (시차 특성)
- 과거 데이터를 새로운 입력 변수로 추가하는 방법.
-
df['lag_1'] = df['value'].shift(1) # 1시점 전 값 df['lag_2'] = df['value'].shift(2) # 2시점 전 값
- ✅ 활용 효과
- “이전 상태가 현재에 영향을 준다”는 시계열의 자기상관 특성 반영
- 공정 데이터나 센서 데이터의 시간적 연속성 학습에 유용
🔹 3️⃣ Rolling Statistics (이동 통계량)
- 일정 구간(window) 단위로 평균·표준편차 등 통계치를 계산.
-
df['rolling_mean'] = df['value'].rolling(window=3).mean() df['rolling_std'] = df['value'].rolling(window=3).std()
- ✅ 활용 효과
- 공정의 정상 상태 기준선(baseline) 파악
- 이동 평균·표준편차로 이상 탐지 가능
- 추세(smoothing)와 단기 변동성 확인
🔹 4️⃣ diff Feature (변화량 특성)
- 이전 시점과 현재 시점의 차이를 계산하여 변화의 방향·속도 반영.
-
df['diff'] = df['value'].diff()
- ✅ 활용 효과
- 변화 폭 자체가 중요한 데이터(전류, 온도 등)에 유용
- 모델이 단순 상태 값뿐 아니라 “증가/감소 추세”를 학습할 수 있게 함
✅ 요약
기법핵심 개념주요 목적
| 날짜 분리 | 날짜 → 연, 월, 일, 요일 분리 | 주기성 및 계절성 반영 |
| Lag Feature | 과거 시점 데이터 추가 | 시간 의존성 반영 |
| Rolling Statistics | 이동 평균·표준편차 계산 | 추세 및 이상 탐지 |
| diff Feature | 시점 간 변화량 계산 | 변화 방향·속도 반영 |
📌추가로 해야할 점
심화 프로젝트
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 본캠프_9주차(수)_TIL(심화 프로젝트 기간) (0) | 2025.11.12 |
|---|---|
| 본캠프_9주차(화)_TIL(심화 프로젝트 기간) (0) | 2025.11.11 |
| 본캠프_8주차(금)_TIL(심화 프로젝트) (0) | 2025.11.07 |
| 본캠프_8주차(목)_TIL(2차 프로젝트 시작) (0) | 2025.11.06 |
| 본캠프_8주차(수)_TIL(랜덤 포레스트, XGBoost 정리) (0) | 2025.11.05 |