⚙️ 최고의 요리를 위한 재료 손질 (전처리 파이프라인)
최고의 모델을 만들기 위한 데이터 전처리 과정은 다음과 같은 체계적인 단계를 거칩니다. 각 단계는 다음 단계의 성공을 위한 발판이 됩니다.
기초 정보 확인
.info(), .describe()로 데이터의 구조, 결측치, 통계량을 파악합니다.
이상치 및 오류 데이터 처리
.drop() 등으로 분석을 방해하는 오염된 데이터를 제거하여 무결성을 확보합니다.
결측치 처리 (비어있는 값 채우기)
.fillna(), .dropna()로 빈칸을 채우거나 제거하여 컴퓨터가 계산할 수 있도록 합니다.
데이터 스케일링
MinMaxScaler 등으로 특징 간 단위를 통일하여 알고리즘이 왜곡 없이 학습하도록 돕습니다.
💧 비어있는 값과의 싸움 (결측치 처리)
실제 데이터에는 값이 누락된 '결측치(NaN)'가 흔하게 존재합니다. 컴퓨터는 이런 빈칸으로는 계산을 할 수 없으므로, 반드시 합리적인 방법으로 처리해야 합니다.
처리 전 (Before)
몸무게 컬럼에 결측치(NaN)가 있어
평균 계산이 불가능합니다.
| 몸무게(g) |
|---|
| 4500 |
| NaN |
| 3800 |
| NaN |
| 5200 |
| 평균: ??? |
처리 후 (After)
결측치를 평균값(4500)으로 채워
데이터를 온전히 활용할 수 있습니다.
| 몸무게(g) |
|---|
| 4500 |
| 4500 |
| 3800 |
| 4500 |
| 5200 |
| 평균: 4500 |
fillna), 범주형 데이터는 최빈값으로 채우거나 해당 행을 제거(dropna)하는 것이 일반적입니다. 데이터 손실을 최소화하는 것이 중요합니다.
⚖️ 데이터 스케일링: 가장 중요한 마법!
k-NN처럼 '거리' 기반 알고리즘에게 스케일링은 선택이 아닌 필수입니다. 단위와 숫자 범위가 다른 특징들을 공평한 출발선에 세워, 알고리즘이 착각하지 않도록 돕습니다.
왜 스케일링이 필수적인가?
컴퓨터는 '몸무게 (4500g)'와 '부리 길이 (40mm)'를 비교할 때, 단위는 무시하고 숫자 크기만 봅니다. 이 경우, 몸무게가 부리 길이보다 100배 이상 더 중요한 특징이라고 착각하여 거리 계산을 왜곡시킵니다.
정규화(Normalization)는 MinMaxScaler를 사용해 모든 특징의 값을 0과 1 사이로 변환하여, 모든 특징이 동등한 중요성을 갖도록 만듭니다.