"모델보다 전처리"
House Prices 데이터셋으로 전처리를 단계별로 연습했다. 학습 목표는 명확했다 — 결측값 탐색·처리, 수치형/범주형별 다른 전략, 복사의 이해, 이상치 제거, 전/후 비교.
결측값을 다르게 채우기
먼저 결측 현황을 파악한다.
df.isnull().sum().sort_values(ascending=False)- 결측 개수와 비율(%) 을 계산해 상위 컬럼을
barh로 시각화 - 수치형 (
LotFrontage): 평균 vs 중앙값을 비교하고 중앙값으로 채움 (이상치에 덜 민감) - 범주형 (
GarageType): 결측이 '차고 없음'을 뜻할 수 있으니'None'문자열로 채움
같은 결측이라도 컬럼의 의미에 따라 처리가 달라진다는 게 핵심이었다.
얕은 복사 vs 깊은 복사
가장 헷갈렸지만 중요한 개념.
- 얕은 복사(shallow): 겉만 복사, 내부는 원본과 연결 → 한쪽을 바꾸면 다른 쪽도 바뀔 수 있음
- 깊은 복사(deep,
df.copy()): 완전히 독립된 사본
전처리 중 원본을 실수로 오염시키지 않으려면, "지금 내가 다루는 게 사본인가 원본인가"를 늘 의식해야 한다는 걸 배웠다.
이상치 제거 (IQR)
Q1, Q3, IQR = Q3 - Q1 을 구하고 Q1 - 1.5*IQR ~ Q3 + 1.5*IQR 범위를 벗어나는 값을 이상치로 판단해 처리했다.
정리
전처리는 "데이터를 깨끗하게 만드는 일"이 아니라 "의미에 맞게 판단하는 일" 이었다. 왜 중앙값인지, 왜 'None'인지, 왜 이 행을 지우는지 — 각 결정에 이유를 붙이는 연습이 됐다.