개발 창고/AI

데이터 전처리와 시각화: AI 모델 학습을 위한 필수 단계

Royzero 2025. 8. 14. 22:00
반응형

1. 데이터 전처리가 중요한 이유

AI 모델의 성능은 데이터 품질에 크게 좌우됩니다.
데이터가 깨끗하지 않으면, 아무리 좋은 모델이라도 결과가 나빠집니다.
따라서 학습 전에 전처리(Preprocessing) 단계가 꼭 필요합니다.


1.1 전처리의 목표

  • 결측치(Missing Value) 처리
  • 이상치(Outlier) 제거
  • 스케일 조정(Normalization/Standardization)
  • 범주형 데이터 인코딩
  • 데이터 시각화로 이해도 향상

2. 결측치 처리

2.1 결측치 확인

import pandas as pd

df = pd.read_csv("data.csv")
print(df.isnull().sum())

2.2 결측치 처리 방법

  1. 삭제(Drop): 결측치가 있는 행/열 제거

    df = df.dropna()
  2. 대체(Fill): 평균, 중앙값, 최빈값으로 채움

    df['age'] = df['age'].fillna(df['age'].mean())

3. 이상치 탐지와 처리

  • 이상치(Outlier): 데이터 분포에서 벗어난 극단값

  • 탐지 방법

    • 통계 기반: IQR(사분위수 범위)
    • 시각화: Boxplot
import numpy as np

Q1 = df['value'].quantile(0.25)
Q3 = df['value'].quantile(0.75)
IQR = Q3 - Q1
outliers = df[(df['value'] < Q1 - 1.5*IQR) | (df['value'] > Q3 + 1.5*IQR)]

4. 데이터 스케일 조정

모델에 따라 특성(Feature)의 스케일 차이가 성능에 영향을 줍니다.

  • 표준화(Standardization): 평균 0, 표준편차 1
  • 정규화(Normalization): 0~1 범위
from sklearn.preprocessing import StandardScaler, MinMaxScaler

scaler = StandardScaler()
df_scaled = scaler.fit_transform(df[['feature1', 'feature2']])

5. 범주형 데이터 인코딩

모델이 텍스트를 직접 이해하지 못하므로 숫자로 변환해야 합니다.

  • 원-핫 인코딩 (One-Hot Encoding):
df_encoded = pd.get_dummies(df, columns=['category'])

6. 데이터 시각화

6.1 히스토그램

import matplotlib.pyplot as plt

df['age'].hist(bins=20)
plt.xlabel('Age')
plt.ylabel('Count')
plt.show()

6.2 박스플롯(Boxplot)

df.boxplot(column='value', by='category')
plt.show()

6.3 산점도(Scatter Plot)

plt.scatter(df['feature1'], df['feature2'])
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

7. 실습 – Iris 데이터 전처리와 시각화

from sklearn.datasets import load_iris
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler

# 데이터 불러오기
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target

# 결측치 확인
print(df.isnull().sum())

# 표준화
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df.iloc[:, :-1])

# 시각화
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], c=df['target'])
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.show()

8. 오늘의 핵심 요약

  • 전처리는 데이터 품질을 높여 모델 성능을 극대화
  • 결측치, 이상치, 스케일 조정, 범주형 인코딩이 주요 작업
  • 시각화를 통해 데이터 특성을 쉽게 이해 가능

  1. AI 데이터 전처리와 시각화 완벽 가이드
  2. 결측치, 이상치, 스케일 조정, 인코딩, 시각화까지 한 번에 배우기
  3. 인공지능 모델 성능을 높이는 데이터 전처리 비법
반응형