반응형
데이터 전처리란?
AI나 머신러닝 모델을 만들 때 가장 먼저 해야 할 일은 데이터를 준비하는 것입니다.
하지만 현실의 데이터는 깨끗하지 않고, 불완전한 경우가 대부분입니다.
예를 들어:
- 누락된 값(Missing Values): 키나 나이 정보가 비어 있을 수 있음
- 이상한 값(Outliers): 나이가 150살로 되어 있는 경우
- 형식이 제각각인 데이터: 어떤 날짜는
2025-06-01
, 어떤 날짜는06/01/25
처럼 되어 있음
이런 데이터를 정리하고 표준화하는 작업을 **데이터 전처리(Data Preprocessing)**라고 합니다.
왜 데이터 전처리가 중요할까?
AI 모델은 주어진 데이터를 그대로 믿고 학습합니다.
즉, 좋지 않은 데이터를 넣으면 모델 성능도 나빠집니다.
이것을 흔히 GIGO(Garbage In, Garbage Out)라고 표현하기도 합니다.
예시로, 고객 나이 데이터에 ‘알 수 없음’이라는 값이 들어있다고 해봅시다.
이를 처리하지 않으면 모델이 제대로 동작하지 않거나, 전혀 엉뚱한 예측을 할 수 있습니다.
전처리에서 자주 하는 작업
1. 결측치 처리 (Missing Value Handling)
- 비어 있는 데이터를 처리
- 대표적인 방법: 평균값 대체, 삭제, 예측값 대체 등
df['age'].fillna(df['age'].mean(), inplace=True) # 평균값으로 채우기
2. 이상치 제거 (Outlier Removal)
- 극단적으로 크거나 작은 값을 제거
- 대표적인 방법: IQR이나 표준편차 기반 필터링
Q1 = df['salary'].quantile(0.25)
Q3 = df['salary'].quantile(0.75)
IQR = Q3 - Q1
df = df[(df['salary'] >= Q1 - 1.5*IQR) & (df['salary'] <= Q3 + 1.5*IQR)]
3. 인코딩 (Encoding)
- 문자열 데이터를 숫자로 변환
- 예: 성별 "남자", "여자"를 각각 1, 0으로 변환
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['gender'] = le.fit_transform(df['gender']) # 남자=1, 여자=0
4. 스케일링 (Scaling)
- 수치형 데이터를 정규화 또는 표준화
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df[['height', 'weight']] = scaler.fit_transform(df[['height', 'weight']])
예시: 붓꽃(Iris) 데이터 전처리
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
# 일부러 결측치 삽입
df.loc[0, 'sepal length (cm)'] = None
# 결측치 채우기
df['sepal length (cm)'].fillna(df['sepal length (cm)'].mean(), inplace=True)
# 스케일링
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df[iris.feature_names] = scaler.fit_transform(df[iris.feature_names])
마무리: 전처리는 AI의 시작이다
데이터 전처리는 모델 성능을 높이기 위한 기초 체력 훈련이라고 볼 수 있습니다.
좋은 데이터를 만들어야 좋은 AI 모델이 나올 수 있습니다.
반응형
'개발 창고 > AI' 카테고리의 다른 글
Hugging Face 입문: 개발자를 위한 AI 시작 가이드 (1) | 2025.06.18 |
---|---|
Streamlit 앱을 Hugging Face Spaces에 배포하는 가이드 (3) | 2025.06.17 |
LoRA에서 `target_modules`란 무엇인가요? (1) | 2025.06.17 |
SFTTrainer란? Hugging Face로 쉽게 시작하는 언어모델 미세 조정 (3) | 2025.06.15 |
NVIDIA-SMI 완전 정복: GPU 상태 확인 및 리소스 모니터링 가이드 (3) | 2025.06.14 |