<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/94dbaed9-349c-449d-bc43-25de3ae5a780/SpartaIconScale9.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/94dbaed9-349c-449d-bc43-25de3ae5a780/SpartaIconScale9.png" width="40px" /> 수업 목표
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/393cd135-1603-4797-8fa6-42abcfedd782/SpartaIconS24.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/393cd135-1603-4797-8fa6-42abcfedd782/SpartaIconS24.png" width="40px" />
목차
</aside>
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/11965e36-5cde-4d10-b470-06dfbe247327/scc캐릭터_아하_280x280.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/11965e36-5cde-4d10-b470-06dfbe247327/scc캐릭터_아하_280x280.png" width="40px" /> 필수 프로그램 설치
✅ Google Chrome
</aside>
<aside> ❗
결측치, 이상치, 불균형 데이터를 제대로 처리하고, 의미 있는 파생 변수를 생성하여 모델의 성능을 높일 수 있는지 알아보겠습니다!
</aside>
데이터 전처리란?
<aside> 📚
원시(raw) 데이터에서 불필요하거나 손실(노이즈)이 있는 부분을 처리하고, 분석 목적에 맞는 형태로 만드는 과정
</aside>
<aside> 1️⃣
모델 정확도 및 신뢰도 향상
</aside>
<aside> 2️⃣
이상치나 결측치가 많은 상태로 학습하면 예측 성능이 크게 떨어짐
</aside>
<aside> 3️⃣
효율적인 데이터 분석과 모델 훈련을 위해 필수적인 단계
</aside>
<aside>
<aside>
<aside>
<aside>
<aside> 1️⃣
삭제(Removal)
: 결측치가 있는 행(row) 또는 열(column)을 제거
→ 간단하지만 데이터 손실이 발생
→ 결측치가 전체 데이터에서 매우 소수일 때 적합
</aside>
<aside> 2️⃣
대체(Imputation)
: 평균 또는 중앙값으로 대체
→ 수치형 데이터에서 많이 사용, 데이터 분포 왜곡이 비교적 적음
: 최빈값으로 대체
→ 범주형 데이터에서 사용
: 예측 모델로 대체
→ 회귀/분류 모델을 이용해 결측값을 예측
</aside>
<aside>
→ 중앙값으로 간단히 대체하거나
→ 인접 시간대 센서 값의 추세(ex: 이동평균)를 바탕으로 결측치 채움
<aside>
→ 일정 기간(예: 이전 5일, 이후 5일 등) 주가의 평균 또는 가중평균을 통해 결측값을 보정
→ 직전, 직후에 기록된 유효한 데이터로 빈 값을 채우는 방식 (Forward/Backward Fill)
→ 중앙값을 사용하여 대체, 극단값의 영향을 받지 않아 평균 대체보다 안정적 → 그룹(클러스터)의 대표값으로 대체 (결측값이 속한 클러스터의 평균, 중앙값 등을 사용)
→ 비교적 중요도가 낮은 지표라면, 간단히 제거
</aside>
<aside>
</aside>
import numpy as np
import pandas as pd
# 1) 가상 데이터 생성
# - 일부 값들을 np.nan으로 지정해 결측값을 만듭니다.
data = {
'A': [1, 2, np.nan, 4, 5, np.nan, 7],
'B': [5, 4, 2, np.nan, np.nan, 3, 1],
'C': [2, np.nan, np.nan, 6, 7, 8, 9]
}
df = pd.DataFrame(data)
df
